Estoy buscando autenticar a un usuario desde una aplicación cliente mientras uso la API web ASP.NET . He visto todos los videos en el sitio y también he leído esta publicación en el foro .
Poner el [Authorize]
atributo correctamente devuelve un 401 Unauthorized
estado. Sin embargo, necesito saber cómo permitir que un usuario inicie sesión en la API.
Quiero proporcionar las credenciales de usuario de una aplicación de Android a la API, hacer que el usuario inicie sesión y luego tener todas las llamadas API posteriores autenticadas previamente.
android
.net
authentication
asp.net-web-api
Mujtaba Hassan
fuente
fuente
Respuestas:
Debe enviar una cookie de autenticación de formularios válida junto con la solicitud. Esta cookie generalmente la envía el servidor cuando se autentica (
LogOn
acción) llamando al[FormsAuthentication.SetAuthCookie
método (consulte MSDN ).Entonces el cliente necesita realizar 2 pasos:
LogOn
acción enviando el nombre de usuario y la contraseña. A su vez, esta acción llamará alFormsAuthentication.SetAuthCookie
método (en caso de que las credenciales sean válidas) que a su vez establecerá la cookie de autenticación de formularios en la respuesta.[Authorize]
acción protegida mediante el envío de la cookie de autenticación de formularios que recuperó en la primera solicitud.Pongamos un ejemplo. Suponga que tiene 2 controladores API definidos en su aplicación web:
El primero responsable de manejar la autenticación:
y el segundo que contiene acciones protegidas que solo los usuarios autorizados pueden ver:
Ahora podríamos escribir una aplicación cliente que consuma esta API. He aquí un ejemplo de aplicación de consola trivial (asegúrese de que ha instalado el
Microsoft.AspNet.WebApi.Client
yMicrosoft.Net.Http
paquetes NuGet):Y así es como se ven las 2 solicitudes HTTP en el cable:
Solicitud de autenticación:
Respuesta de autenticación:
Solicitud de datos protegidos:
Respuesta para datos protegidos:
fuente
Tomo Android como ejemplo.
Atención, por favor: i.localhost no se puede utilizar. El dispositivo Android parece localhost como host. ii. Si implementa la API web en IIS, se debe abrir la autenticación de formulario.
fuente
Use este código y acceda a la base de datos
fuente