2008-11-05 17 views
5

Estoy desarrollando una aplicación de intranet en ASP.NET que usa la autenticación de Windows. Creé una clase AD que obtiene información del Controlador de dominio de Active Directory. Esto es lo que utilizo para obtener cosas como grupos de usuarios en los que está el usuario actualmente registrado. El problema está en las funciones de ASP.NET en las que se encuentra el usuario. Parece gracioso, pero la lista de grupos AD en la que se encuentra el usuario es totalmente diferente de la lista de Roles que tiene el usuario.AspNetWindowsTokenRoleProvider no funciona correctamente para la autenticación de Windows en ASP.NET

Esto es lo que me sale:

Lista de grupos de anuncios para un usuario certian

  1. Desarrolladores
  2. Operadores de cuentas
  3. Administradores de dominio
  4. IS_IUSRS
  5. Administradores

lista de funciones del mismo usuario

usuarios del dominio
  1. PUDDOM \
  2. Todo el mundo
  3. BUILTIN \ Users
  4. BUILTIN \ Administradores
  5. NT AUTHORITY \ INTERACTIVO
  6. NT Authority \ usuarios autenticados
  7. NT AUTHORITY \ Esta organización
  8. LOCAL
  9. PUDDOM Administradores \ Domain
  10. PUDDOM \ denegado contraseña RODC grupo de replicación
  11. PUDDOM \ DnsAdmins

OTRA INFORMACIÓN:

  1. tengo mi página web utiliza la autenticación integrada de Windows desde IIS 7 .
  2. Una parte de mi web.config parece

esto:

<authentication mode="Windows" /> 
<authorization> 
    <deny users="?" /> 

</authorization> 

<roleManager defaultProvider="AspNetWindowsTokenRoleProvider" enabled="true"> 
     <providers> 
      <remove name="AspNetSqlRoleProvider" /> 
     </providers> 
</roleManager> 

¿Cómo conciliar la lista?

Necesito que mi lista de roles refleje los mismos datos que mi lista de grupos de AD porque usaré el recorte de roles en mi mapa del sitio y otras cosas.

Respuesta

0

Es posible que deba asignar los permisos del sitio web específicamente a los grupos que desea enumerar.

+0

Por favor, especifique cómo hacerlo. Creo que este es mi problema y quiero votirte si esto lo resuelve. – Jan

4

Parte de su resultado se debe a que algunos de los grupos a los que pertenece el usuario son miembros de otros grupos. La lista completa de grupos de usuarios incluirá todos los grupos a los que pertenece el usuario, tanto directamente como a través de la membresía en otros grupos que también son miembros.

La lista también incluirá grupos integrados que normalmente están ocultos de las herramientas de administración nativas de forma predeterminada.

Lo mejor que puede hacer es que la aplicación almacene una lista maestra de los grupos que desea que vea su aplicación o una lista de grupos que desea que su aplicación ignore (ya sea una lista de inclusión o una lista de exclusión). Luego, cuando retire los roles de un usuario específico, simplemente compárelos con la lista de exclusión o inclusión configurada y filtre los resultados no deseados.

Si quiere una manera más fácil, hay una fuente abierta AD role provider over at codeproject que ya tiene soporte para ambas listas de exclusión e inclusión. También tiene otras características agradables como el almacenamiento en caché opcional que REALMENTE acelerará tu aplicación. El proveedor de roles de AD incorporado se desempeña muy mal.

Cuestiones relacionadas