net mvc español asp asp.net claims-based-identity asp.net-identity visual-studio-2013 .net-4.5

español - autenticación y autorización en ASP.NET MVC 5



asp.net core mvc (2)

Asp.net MVC 5 parece haber dejado atrás el uso de la clase AuthorizeAttribute, donde podría crear un atributo de autorizar personalizado implementando la clase AuthorizeAttribute, anular sus métodos y ocultar la propiedad SiteRole en el caso de que quiera crear sus propios roles. Todos los ejemplos que he visto sugieren utilizar OWIN o el marco de identidad. ¿Son estas las únicas dos maneras de realizar autenticación y autorización en el nuevo marco ASP.Net ?. ¿Me perderé algo si lo hago a la vieja usanza? No quiero que el marco cree todas las tablas de usuario y de roles para mí. ¿Qué sucede si deseo agregar un usuario existente y una tabla de roles a una nueva aplicación?

También realmente no veo la necesidad de integración social en todas las aplicaciones hasta el momento y no creo que también lo necesite de inmediato. ¿Hay algún artículo que explique comenzar con un mínimo básico mediante el uso de un atributo de autorizar personalizado y luego agrega las nuevas funciones de autenticación. Quiero algo que básicamente explique todo el desorden en un proyecto recién creado sin Autenticación o Autenticación de usuario individual seleccionada.


Ben Foster tiene una serie de dos partes que lo guía paso a paso para implementar la autenticación basada en cookies con ASP.NET Identity desde cero, comenzando con una nueva aplicación web sin autenticación seleccionada. Siga la Parte 1 y la Parte 2 "ASP.NET Identity Stripped Bare".

utilice el siguiente atributo Autorizar para gestionar el acceso no autorizado cuando el usuario ya esté autenticado.

public class LoggedOrAuthorizedAttribute : AuthorizeAttribute { public LoggedOrAuthorizedAttribute() { View = "error"; Master = String.Empty; } public String View { get; set; } public String Master { get; set; } public override void OnAuthorization(AuthorizationContext filterContext) { base.OnAuthorization(filterContext); CheckIfUserIsAuthenticated(filterContext); } private void CheckIfUserIsAuthenticated(AuthorizationContext filterContext) { // If Result is null, we’re OK: the user is authenticated and authorized. if (filterContext.Result == null) return; // If here, you’re getting an HTTP 401 status code. In particular, // filterContext.Result is of HttpUnauthorizedResult type. Check Ajax here. if (filterContext.HttpContext.User.Identity.IsAuthenticated) { if (String.IsNullOrEmpty(View)) return; var result = new ViewResult {ViewName = View, MasterName = Master}; filterContext.Result = result; } } }


Aún puede personalizar AuthorizeAttribute en MVC 5 utilizando ASP.NET Identity. Hay un ejemplo de hacer esto en el Proyecto SimpleSecurity . Aquí hay un AuthorizedAttribute personalizado que puede usar para los controladores y aquí está el AuthorizeAttribute personalizado que puede usar para las API Web . El concepto detrás de estos CustomizeAttributes personalizados es desacoplar su modelo de seguridad de su modelo de aplicación que se trata aquí . El de la API web también es compatible con la autenticación básica .

La tubería de seguridad ha cambiado con la introducción de OWIN y me encontré con algunos problemas con el comportamiento de AuthorizeAttribute para Web API, que se discute aquí .

También encontrará ejemplos en el proyecto SimpleSecurity sobre la migración del antiguo proveedor de membresía llamado SimpleMembership a MVC 5. Algunos de los problemas con el proceso de actualización se tratan aquí . Aunque logré que funcionara, así que podrías ir con la implementación del antiguo proveedor de membresía. Pero mi recomendación sería ir con la identidad de ASP.NET, ya que esta es la forma en que avanzará Microsoft, será una arquitectura más flexible y eliminará muchos de los problemas que se encuentran en las antiguas implementaciones de proveedores de membresía .