Когда вы создаете новый проект с индивидуальной проверкой подлинности в ASP.NET, решение создается с помощью поставщика OAuth для обработки запроса проверки подлинности.
Если вы посмотрите на свое решение, вы должны увидеть папку Providers с классом ApplicationOAuthProvider.
Этот класс реализует всю логику для аутентификации ваших участников на вашем веб-сайте. Конфигурация задается при запуске, чтобы вы могли настроить конечную точку URL-адреса с помощью OAuthOption.
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
Свойства пути TokenEndPoint определяют URL-адрес, который запускает метод GrantResourceOwnerCredentials класса GrandResourceOwnerCredentials.
Если вы используете fiddler для аутентификации и использования такого тела
grant_type=password&username=testUserName&password=TestPassword
вы должны пройти в следующем методе:
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);
}
где context.UserName и context.Password устанавливаются с данными, используемыми в запросе. После подтверждения личности (здесь с использованием Entity Framework и пары userName, Password в базе данных) вызывающей стороне отправляется токен Bearer. Затем этот токен носителя можно использовать для аутентификации для других вызовов.
С уважением.
person
Jeremie Devillard
schedule
22.04.2014