2011-12-27 11 views
6

En esta aplicación de intranet ASP.NET MVC 3 (creada usando MVC 3 Aplicación de Intranet plantilla), donde los usuarios se autentican automáticamente contra AD, estoy tratando de restringir el acceso a un controlador a los usuarios en el grupo local Administrators. Para lograr esto, he intentado aplicar AuthorizeAttribute así:¿Cómo hago que AuthorizeAttribute funcione con el grupo de administradores locales en la aplicación de intranet ASP.NET MVC 3?

[Authorize(Roles = "Administrators")] 
public class ElmahController : Controller 

Sin embargo, a pesar de que mi usuario de AD (la aplicación informa al usuario esperada ha sido autenticado) se encuentra en el grupo local Administrators, no puedo obtener acceso al controlador cuando se aplica AuthorizeAttribute. Solo aparece una página en blanco. ¿Qué estoy haciendo mal?

Por otro lado, he verificado que la especificación de mi usuario en particular funciona:

[Authorize(Users = @"ad\arve")] 
public class ElmahController : Controller 

En este caso, se puede recuperar la página restringida éxito.

EDIT: me encontré con que la clasificación del grupo con BUILTIN trabajaron:

[Authorize(Roles = @"BUILTIN\Administrators")] 

es esta la forma definitiva de referirse a los grupos locales a través de AuthorizeAttribute aunque ??

Respuesta

6

Siga mi tutorial How to Create an Intranet Site Using ASP.NET MVC Es necesario utilizar la clase incorporada AspNetWindowsTokenRoleProvider, que utiliza grupos de Windows como papeles

[Authorize(Roles = @"BUILTIN\Administrators")] 

sólo funcionará si usted es un administrador en el servidor IIS. Si implementa su aplicación en un servidor de producción para su empresa, tendrá que ser un administrador local en el servidor de producción.

+0

Gracias, esto corresponde a lo que encontré (tener que calificar 'Administradores' con" BUILTIN "). – aknuds1

0

Puede personalizar un atributo de autorización de AD para colocar encima de cada acción o controlador. He hecho esto antes e hice algo muy similar al siguiente enlace. Esto funciona si está utilizando la autenticación de formularios y no Windows.

Active Directory Authorization based on Groups

+0

El grupo de administradores es local, ¿el problema es el mismo que para los grupos de AD? – aknuds1

+0

Al mirar la respuesta más reciente a la pregunta a la que se refiere, dice que puede salirse con la suya '' System.Web.Security.WindowsTokenRoleProvider' en web.config, básicamente. Esto ya está agregado a mi web.config, estoy asumiendo por la plantilla de la aplicación Intranet, por lo que creo que la autenticación contra AD ya funcionará. Por ejemplo, pude autorizar contra mi usuario específico: '[Authorize (Users = @" ad \ arve ")]'. – aknuds1

+1

Eso es incorrecto. Vea mi artículo en MSDN Cómo crear un sitio de Intranet usando ASP.NET MVC http://msdn.microsoft.com/en-us/library/gg703322(VS.98).aspx Debe usar AspNetWindowsTokenRoleProvider clase – RickAndMSFT

Cuestiones relacionadas