ASP.NET appartenenza - Quali RoleProvider da usare in modo User.IsInRole () controlla ActiveDirectory Gruppi?
-
21-08-2019 - |
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
Cosa devo cambiare? ( ed è il
<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>
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