Я хочу создать токен-носитель, используя ASP.NET Web API 2. У меня нет таблицы пользователей для аутентификации. Я буду хранить статические учетные данные на моем web.config - PullRequest
0 голосов
/ 18 мая 2019

Я хочу создать токен-носитель, используя 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;
    }          
}
...