ASP.NET Composición - ¿Qué RoleProvider utilizar de manera User.IsInRole () Comprueba ActiveDirectory Grupos?
-
21-08-2019 - |
Pregunta
Una pregunta muy simple en realidad:
En este momento tengo un acceso IIS anónimo deshabilitado, los usuarios se registran automáticamente en el uso de su conexión de Windows. Sin embargo llamando User.IsInRole ( "Role name") devuelve falso. Verifiqué User.Identity.Name () y el "Nombre de función" y que debería devolver true.
En este momento tengo esto en mi web.config:
Actualizar
Estaba llamando User.IsInRole ( "Role name") donde debería llamar User.IsInRole ( "DOMINIO \ nombre de papel")
Sin embargo todavía me gusta saber si se necesita la
¿Qué debería cambiar? ( y es el
<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>
Solución
Si utiliza la autenticación de Windows IsInRole funcionará sin necesidad de configuración adicional, como siempre que se recuerde para prefijar el papel con el dominio, es decir, DOMINIO \ nombre de grupo.
Además, puede papel (nunca mejor dicho) su cuenta y utilizar Windows autenticación contra, por ejemplo, un proveedor de funciones de SQL, en el que no desea que su anuncio llena de papeles personalizados para su aplicación.
Así que no, no es necesario la configuración del proveedor en absoluto.
Otros consejos
El proveedor de pertenencia aquí no va a ayudar. El ActiveDirectoryMembershipProvider parece mejor (sólo?) Encaja con la autenticación de formularios.
Bastante seguro de lo único que se necesita en el grupo hay roleManager (junto con el modo de autenticación de base = ajuste 'ventanas')
Fuera de la caja, no hay proveedor de funciones para utilizar Active Directory directamente. Puede utilizar la tabla de papel en el membresía- ASP.NET y función del sistema, o puede utilizar el Administrador de autorización (AzMan).
Hay un artículo sobre CodeProject que muestra la implementación de un proveedor de funciones que trabaja en el Active Directory - con código fuente completo. Tal vez esto ayuda?
Marc