validar usuarios usuario seguridad personalizados permisos password net mvc implement control con autenticacion asp active asp.net-mvc active-directory windows-authentication

asp.net mvc - usuarios - Uso de la autenticación de Windows con grupos de directorio activo como roles



usuarios roles y permisos c# mvc (1)

He leído varias preguntas sobre este tema, como here , here , here y here ; pero ninguno ha proporcionado una solución de trabajo en mi caso.

Lo que quiero hacer:

Implemente la autenticación de Windows para una aplicación web que solo es utilizada por nuestros propios empleados. De esta manera, no deberían necesitar iniciar sesión en la aplicación, pero ya deben estar autenticados por haber iniciado sesión en Windows.

Además, necesito restringir ciertas áreas de la aplicación, en función de los Grupos de seguridad de Active Directory a los que se puede asignar el usuario.

Así que quiero poder decorar Controladores / Acciones con

[Authorize(Roles="SomeRole")]

Lo que he intentado:

yo tengo

<authentication mode="Windows" />

en mi web.config. Y he agregado varias permutaciones de un <roleManager> como se encuentra en algunas de las publicaciones vinculadas a arriba. Actualmente tengo este rol manager

<roleManager defaultProvider="WindowsProvider" enabled="true" cacheRolesInCookie="false"> <providers> <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> </providers> </roleManager>

como se encuentra en this post.

Tal como está, si decoro un controlador con [Authorize] , puedo acceder a él bien.

Sin embargo:

Puedo ver en mi configuración de usuario en la red, que formo parte de un grupo de seguridad de AD llamado "IT". Pero si decoro el mismo controlador con [Authorize(Roles="IT")] obtengo la pantalla en blanco que sirve el servidor de desarrollo asp.net para un 401 no autorizado. Esto es inesperado. Creo que debería poder ver la página ya que estoy conectado a Windows y formo parte del grupo "IT".

Casi todo lo que encuentro sobre este tema hace que parezca muy simple lograr lo que estoy tratando de hacer, pero claramente me estoy perdiendo algo aquí.


Para dev estoy usando IISExpress con las propiedades del servidor de desarrollo del proyecto MVC configurado de modo que la autenticación anónima esté deshabilitada y la autenticación de Windows esté habilitada. La configuración web se implementa utilizando nuestro servidor de compilación TFS para probar y liberar servidores para los cuales la autenticación también se configura como se indica arriba y también funciona en esas ubicaciones.

En mi web.config tengo.

<system.web> .... <authentication mode="Windows" /> <authorization> <deny users="?" /> </authorization> <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"> <providers> <clear /> <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> </providers> </roleManager> .... </system.web>

Puedo usar

[Authorize(Roles = @"DOMAIN/ADGroup")] Public ActionResult Index() {...}

o

public ActionResult Index() { var User = System.Web.HttpContext.Current.User; if (User.IsInRole("DOMAIN//ADGroup")) { return RedirectToAction("IRSAdmin"); } return View(); }

Después de recordar cerrar sesión y volver a iniciarla, se aplicó el permiso que se me otorgó al grupo de AD.