Agrego ASP.NET MVC a una aplicación existente de WebForms. Por el momento, no me importa la autenticación/inicio de sesión, ya que esta parte es manejada por código existente (autenticación de formularios).Autorización basada en permisos en ASP.NET MVC3
En la aplicación WebForms existente, tenemos una autorización basada en permisos totalmente personalizada por página. De modo que cada usuario tiene un conjunto de derechos que enumera las páginas a las que tiene acceso.
Ahora necesito decidir cómo puedo usar el mismo sistema de permisos para restringir el acceso a controladores y acciones de MVC específicos.
Según tengo entendido, para ASP.NET MVC hay un estándar AuthorizeAttribute donde puedo especificar roles. También encontré algunos artículos que sugieren que especifican los permisos en lugar de papeles - entonces es posible hacer algo como esto:
[CustomAuthorize(Roles = "View products, Edit products")]
Al extender AuthorizeAttribute, también puedo definir cómo almaceno y permisos de acceso.
Esta solución sería aceptable para mí (aunque el cambio de la semántica de los roles huele un poco).
Pero antes de comprometerme con ella, me gustaría ver qué otras opciones hay. Y ahí es donde estoy atascado: no he encontrado una descripción completa de los diferentes enfoques sobre la autorización en ASP.NET MVC. También me gustaría saber cómo todos los conceptos de seguridad (como Autenticación de formularios, Proveedores de membresía, Atributo de autorización, IPrincipal, etc.) están relacionados entre sí y cómo se supone que deben funcionar juntos.
Esto es similar a lo que se intentó aquí: http://stackoverflow.com/questions/10338734/custom-security-scenario-in-asp-net-mvc/ – antijon
@antijon por lo que yo entiendo, es similar a implementando un CustomizeAttribute personalizado. Pero me gustaría obtener más información sobre otras opciones y sus pros y contras. –