tutorial part net based asp asp.net-web-api owin katana

asp.net-web-api - part - web api token authentication



En la arquitectura Web Api/Owin, ¿dónde se manejan las solicitudes a ''/ token''? (1)

Cuando crea un nuevo proyecto con autenticación individual en ASP.NET, la solución se crea con un proveedor OAuth para manejar la solicitud de autenticación.

Si observa su solución, debería ver una Carpeta de proveedores con una clase ApplicationOAuthProvider.

Esta clase implementa toda la lógica para autenticar a sus miembros en su sitio web. La configuración se establece en Inicio para permitirle personalizar el punto final de la URL a través de OAuthOption.

OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString("/Token"), Provider = new ApplicationOAuthProvider(PublicClientId), AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"), AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), AllowInsecureHttp = true };

Las propiedades de la ruta TokenEndPoint definieron la url que activó el método GrantResourceOwnerCredentials de GrandResourceOwnerCredentials.

Si usas fiddler para autenticar y usar este tipo de cuerpo

grant_type=password&username=testUserName&password=TestPassword

Debes pasar en el siguiente método:

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>(); ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password); if (user == null) { context.SetError("invalid_grant", "The user name or password is incorrect."); return; } ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager, OAuthDefaults.AuthenticationType); ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager, CookieAuthenticationDefaults.AuthenticationType); AuthenticationProperties properties = CreateProperties(user.UserName); AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties); context.Validated(ticket); context.Request.Context.Authentication.SignIn(cookiesIdentity); }

donde context.UserName y context.Password se configuran con los datos utilizados en la solicitud. Una vez que se confirma la identidad (aquí, utilizando Entity Framework y un par de UserName, Password en una base de datos), se envía un token de Portador al llamante. Este token de portador podría utilizarse para autenticarse para las otras llamadas.

Saludos.

Estoy tratando de entender la autenticación y autorización de las cuentas individuales de Asp.net Web Api. He visto varios tutoriales en la web incluyendo este . En resumen, cuando un agente de usuario proporciona un nombre de usuario y una contraseña, la API emite un token que el cliente utilizará en las llamadas posteriores a la API para identificarse. El agente de usuario recibe el token realizando una solicitud, generalmente a: http://example.com/Token . La ruta parece estar configurada en la clase de inicio de la siguiente manera:

TokenEndpointPath = new PathString("/Token")

Mi problema es que no puedo encontrar ningún método de controlador que coincida con esa ruta. ¿Como funciona esto?