Web API проверяет токен-носитель JWT от провайдера пользовательской аутентификации - PullRequest
0 голосов
/ 08 мая 2019

Я искал пример или учебное пособие в течение нескольких часов и подумал, что мне нужно что-то опубликовать на этом этапе.

Я пытаюсь проверить токен на предъявителя от собственного провайдера аутентификации в моем проекте .Net 4.7.2 Web Api 2. У меня есть приложение SPA, которое получает токен канала-носителя от этого поставщика аутентификации и отправляет токен канала-носителя на мои конечные точки WebApi. Мне нужно повернуться и проверить токен в каждом запросе. Я подумал, что будет способ указать классы в пространстве имен Microsoft.Owin.Security.Jwt для проверки токена на основе провайдеров аутентификации, хорошо известных url * discovery information url .

Кто-нибудь делал это раньше или указывал мне на хорошую библиотеку / документацию / учебник?

Я знаю, что могу написать свой собственный фильтр запросов авторизации, выйти и достать публичный сертификат с сервера аутентификации, проанализировать токен и проверить подпись, но мне кажется ужасной идеей написать, что я сам использую соответствующие библиотеки.

1 Ответ

0 голосов
/ 08 мая 2019

Хорошо, я нашел хороший пример здесь

Следующий код настраивает наш веб-интерфейс для проверки токенов у нашего провайдера аутентификации при обнаружении открытого ключа через URL-адрес обнаружения OIDC.

   var issuer = "https://my-auth-provider-here/";

    IConfigurationManager<OpenIdConnectConfiguration> configurationManager = 
        new ConfigurationManager<OpenIdConnectConfiguration>($"{issuer}.well-known/openid-configuration", new OpenIdConnectConfigurationRetriever());

    OpenIdConnectConfiguration openIdConfig = configurationManager.GetConfigurationAsync(CancellationToken.None).Result;

    appBuilder.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions()
    {
        AuthenticationMode = AuthenticationMode.Active,
        TokenValidationParameters = new TokenValidationParameters()
        {
            AuthenticationType = "Bearer",
            ValidIssuer = issuer,
            ValidateAudience = false,
            IssuerSigningKeys = openIdConfig.SigningKeys
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...