Как настроить аутентификацию на основе токенов (Token-Based Authentication) в ASP.NET Web API?

Пользователь

от laney_johnson , в категории: Другие , 8 месяцев назад

Как настроить аутентификацию на основе токенов (Token-Based Authentication) в ASP.NET Web API?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от lamar , 8 месяцев назад

@laney_johnson 

Начиная с ASP.NET Web API 2, у вас есть несколько способов настройки аутентификации на основе токенов:

  1. Использование встроенной поддержки аутентификации OAuth: ASP.NET Web API предоставляет встроенную поддержку аутентификации OAuth2 через фреймворк Identity. Вы можете настроить ваше приложение, чтобы выдавать и проверять токены доступа OAuth2 с помощью класса OAuthAuthorizationServerProvider.
  2. Использование JWT (JSON Web Tokens): Вы также можете настроить аутентификацию на основе токенов с использованием JWT. Для этого вам нужно настроить систему аутентификации и авторизации ASP.NET Web API для использования токенов JWT. Вы можете использовать компоненты JwtBearerAuthenticationOptions для настройки аутентификации по JWT-токенам.
  3. Использование сторонних библиотек: Есть также сторонние библиотеки, такие как IdentityServer4 или Auth0, которые предоставляют более обширные функции для настройки аутентификации на основе токенов.


Вот пример кода для настройки аутентификации на основе токенов с использованием встроенной поддержки аутентификации OAuth в ASP.NET Web API:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
public void ConfigureOAuth(IAppBuilder app)
{
    OAuthAuthorizationServerOptions options = new OAuthAuthorizationServerOptions
    {
        TokenEndpointPath = new PathString("/token"),
        Provider = new MyAuthorizationServerProvider(),
        AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
        AllowInsecureHttp = true  // Важно: это только для примера, не используйте AllowInsecureHttp в продакшене
    };

    app.UseOAuthAuthorizationServer(options);

    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class MyAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
    public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        context.Validated();
    }

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        // Ваша логика проверки учетных данных пользователя

        if (context.UserName == "admin" && context.Password == "password")
        {
            // Пользователь успешно аутентифицирован

            var identity = new ClaimsIdentity(context.Options.AuthenticationType);
            // Добавьте любые дополнительные утверждения (claims) к токену

            context.Validated(identity);
        }
        else
        {
            // Если учетные данные пользователя неправильные, вы можете указать ошибку
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            context.Rejected();
        }
    }
}


Вы можете обратиться к документации ASP.NET Web API для получения более подробной информации о настройке аутентификации на основе токенов: https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api/