6

Con la tarea de crear una página de inicio de sesión que permita a los miembros de dos grupos específicos acceder a algunos controladores y acciones en un proyecto MVC, me puse a crear un proveedor de roles para AD. Logré configurarlo con autenticación de formularios y enumerar los grupos a los que pertenece un usuario autenticado en AD.¿Cuál es la relación, si existe, entre grupos de Active Directory y grupos en Exchange?

Resulta, sin embargo, que los grupos a los que se me pidió que configurara esto no son grupos AD. Veo muchos grupos, pero no los que están en cuestión.

La solicitud se basó en el hecho de que estos grupos aparecen en la libreta de direcciones global de Exchange, pero no parece haber una relación 1: 1.

¿Hay alguna relación?

+0

Una cosa que me viene a la mente es la lista de distribución y el grupo de seguridad. Cuando crea un grupo en AD, puede establecer si se trata de un grupo de seguridad o una lista de distribución. El grupo de seguridad se usa en la lista de control de acceso mientras que la lista de distribución se usa principalmente en la lista de correo electrónico y otras cosas no relacionadas con la lista de control de acceso. ¿Cómo está obteniendo los grupos a los que pertenece su usuario? Algunas API pueden darle un grupo de seguridad pero no una lista de distribución. –

+0

@Harvey Gracias, sí, eso es lo que he encontrado. En .NET, llamaba a 'UserPrincipal.GetAuthorizationGroups()', cuando los grupos en cuestión eran grupos de distribución. Llamar a 'UserPrincipal.GetGroups()' los devuelve a todos. Publica una respuesta y la aceptaré. – Jay

Respuesta

7

Hay dos tipos de grupos en Active Directory, lista de distribución y grupo de seguridad. El grupo de seguridad se usa en la lista de control de acceso mientras que la lista de distribución se usa principalmente en la lista de correo electrónico y otras cosas no relacionadas con la lista de control de acceso.

  • UserPrincipal.GetAuthorizationGroups() solo devuelve grupos de seguridad.
  • UserPrincipal.GetGroups() devuelve el grupo de seguridad y la lista de distribución.

Tenga en cuenta que a diferencia de UserPrincipal.GetAuthorizationGroups(), UserPrincipal.GetGroups() devuelve solo el grupo inmediato al que pertenece un usuario. Si GroupA contiene GroupB y GroupB contiene UserX, userX.GetGroups() solo devuelve GroupB pero no GroupA.

Solo una nota al margen, hay errores en .NET 3.5 SP1. UserPrincipal.GetGroups() puede no funcionar correctamente, es posible que desee comprobar esta revisión http://support.microsoft.com/kb/969166

Cuestiones relacionadas