Я хочу создать токен-носитель, используя ASP.NET Web API 2. У меня нет таблицы users
для аутентификации.Я буду хранить статические учетные данные на моем web.config
и предоставлю их клиентскому приложению.
Клиентское приложение вызывает метод api / Token и генерирует токен.Клиенту необходимо отправить токен в последующих запросах.Я пытался проверить пользователя в методе GrantResourceOwnerCredentials
, но ошибка ниже.Может ли кто-нибудь предоставить мне решение о том, как проверить пользователя с помощью статических кредитов и сгенерировать токен.
Сообщение об ошибке: [InvalidOperationException: UserId not found.] *
Microsoft.AspNet.Identity. d__89.MoveNext () + 570
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) + 99
Код:
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();
ApplicationUser user = new ApplicationUser {
UserName="testUser",
Email="test@gmail.com",
Id = new Guid().ToString()
};
// await userManager.FindAsync(context.UserName, context.Password);
if (context.UserName == "testUser" && context.Password == "123456789")
{
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);
}
else
{
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}
}