Tengo un proyecto ASP.NET MVC 4 usando la API web. En el controlador, he establecido que la clase requiera autorización utilizando el atributo [Autorizar]. Para la autenticación, estoy usando el proveedor de membresía de ASP.NET y tengo configurado mi Web.Config para usar la autenticación de "Formularios". Aquí es donde estoy atascado:Autenticación API web ASP.NET MVC 4 con proveedor de membresía
Todo está funcionando bien hasta el punto en que he terminado de probar la API y quiero asegurar el controlador con el atributo [Autorizar] para poder comenzar a probar la autenticación contra usuarios en mi Proveedor de Membresía. Por lo que el fuego de Fiddler y hacer la misma llamada adición de la Autorización: atributo básico junto con un nombre de usuario: contraseña de mi proveedor de pertenencia de este modo:
La respuesta que recibo es 401 no autorizado y bajo "autenticación" Obtengo "No hay encabezado WWW-Authenticate presente". Entonces me doy cuenta de que la API está buscando una clave codificada SHA1. Por lo que el fuego de un generador SHA1 de una búsqueda y obtener un hash de mi nombre de usuario: contraseña y se actualiza el encabezado de solicitud de esta manera:
esto no funciona bien y me da los mismos resultados. También obviamente necesito algún tipo de "clave secreta compartida" para usar con el servidor para decodificar mi nombre de usuario/contraseña.
Así que mis preguntas:
- ¿Cómo consigo esta clave desde el servidor (o en este caso de IIS virtual corriendo VS 2012).
- ¿Cómo puedo usar esto para hacer llamadas autenticadas en Fiddler usando nombres de usuario/contraseñas de un proveedor de membresía ASP.NET?
- Cómo usar esto en mi aplicación cliente para hacer las mismas llamadas (aplicación C# WPF).
- ¿Es esto mejor práctico cuando se combina con SSL en mis llamadas HTTP? Si no es lo que es?
Gracias de antemano!
Gracias Darin, esto es precisamente lo que necesitaba! – CodeAbundance
'User.Identity.Name' en el método del controlador está vacío para mí,' User.Identity.IsAuthenticated' es 'false'. Puedo ver en el depurador que 'Thread.CurrentPrincipal' se establece en el principal con el nombre de usuario correcto y las funciones en el manejador de mensajes. También el '[Autorización (Roles = ...) se respeta el atributo '] ': si utilizo un usuario con roles incorrectos, recibo una respuesta no autorizada y no alcanzo el método del controlador. Pero 'User.Identity' no tiene el valor que he establecido en el manejador de mensajes. ¿Tienes una idea de lo que podría estar mal? – Slauma
@Slauma, no puedo reproducir esto. Tal vez podría comenzar un nuevo hilo que explica paso a paso cómo reproducir el problema (a partir de un proyecto vacío, por supuesto). –