Domanda

Molto semplice domanda in realtà:

Al momento ho IIS accesso anonimo disattivato, gli utenti vengono registrati automaticamente utilizzando il proprio login di Windows. Tuttavia chiamando User.IsInRole ( "nome ruolo") restituisce false. Ho ricontrollato User.Identity.Name () e il "nome ruolo" e dovrebbe restituire true.

Al momento ho questo nel mio web.config:

UPDATE
Ho chiamato User.IsInRole ( "nome ruolo"), dove dovrei chiamare User.IsInRole ( "DOMINIO \ nome ruolo")

Tuttavia mi piace ancora di sapere se è necessario il ingresso a tutti?

Cosa devo cambiare? ( ed è il ingresso necessario a tutti? )

  <authentication mode="Windows">
      <forms
      name=".ADAuthCookie"
      timeout="10" />
  </authentication>


<membership defaultProvider="ADMembershipProvider">
  <providers>
    <clear/>
      <add
         name="ADMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="ADConnectionString"
         connectionUsername="XXX\specialAdUser"
         connectionPassword="xx"
         />
  </providers>
</membership>

<roleManager enabled="true" defaultProvider="WindowsProvider">
  <providers>
    <clear />
      <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>
È stato utile?

Soluzione

Se si utilizza l'autenticazione di Windows IsInRole funzionerà senza configurazione aggiuntiva, purché si ricorda di anteporre il ruolo con il dominio, cioè DOMINIO \ groupName.

In aggiunta è possibile ruolo (gioco di parole) da soli e utilizzare Windows autenticazione contro, ad esempio, un provider di SQL di ruolo, in cui non si desidera che il AD disseminato di ruoli personalizzati per l'applicazione.

Quindi no, non è necessario la configurazione del provider a tutti.

Altri suggerimenti

Il provider di appartenenze qui non sta per aiutare. L'ActiveDirectoryMembershipProvider sembra migliore (solo?) In forma con autenticazione basata su form.

Sono sicuro che l'unica cosa che ti serve in là è il gruppo roleManager (insieme con la modalità di autenticazione di base = impostazione 'finestre')

Fuori dalla scatola, non c'è nessun provider di ruoli di utilizzare direttamente Active Directory. È possibile utilizzare la tabella ruolo nella membership- ASP.NET e il ruolo del sistema, oppure è possibile utilizzare Gestione autorizzazioni (AzMan).

C'è un articolo sulla CodeProject che mostra l'implementazione di un provider di ruoli che funziona in Active Directory - con il codice sorgente completo. Forse questo aiuta?

Marc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top