JwtBearerAuthenticationOptions не содержит определения для IssuerSecurityTokenProviders - PullRequest
1 голос
/ 09 июня 2019

В настоящее время следует этому учебному пособию о том, как реализовать аутентификацию OAuth JWT.Застрял на двух вещах в настоящее время, которые стали немного болезненными для решения.

  1. Приведенный ниже код выдает ошибки «определения» и «пространства имен».
app.UseJwtBearerAuthentication(
                new JwtBearerAuthenticationOptions
                {
                    AuthenticationMode = AuthenticationMode.Active,
                    AllowedAudiences = new[] { audienceId },
                    IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
                    {
                        new SymmetricKeyIssuerSecurityTokenProvider(issuer, audienceSecret)
                    }
                });

Как показано на рисунке ниже, ошибки: enter image description here

Не уверен, почему я получаю эту ошибку, так как все необходимые пакеты установлены.На другом IssuerSecurityKeyProviders существует вместо этого, если я выбрал использовать этот или запустить сборку с ошибками, он сгенерирует токен, но когда я пытаюсь получить доступ к любой из авторизованных конечных точек на API, я получаю страшное «сообщение»: "В этом запросе было отказано в авторизации."

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

enter image description here

И последнее, но не менее важное - поиск хорошего учебника, которым я могу следовать, чтобы помочь мне начать работу с Аутентификацией через Web API с использованием JWT и OWIN.Большинство из них устарели, и пакеты за эти годы изменились, например, этот один , и трудно найти ответы на возникшие проблемы.Сенсорный разочарование

1 Ответ

0 голосов
/ 23 июня 2019

В более новых версиях библиотеки «Microsoft.Owin.Security.Jwt», возможно, были некоторые переименования, которые необходимо учитывать. Попробуйте вместо этого:

        // Api controllers with an [Authorize] attribute will be validated with JWT
        app.UseJwtBearerAuthentication(
            new JwtBearerAuthenticationOptions
            {
                AuthenticationMode = AuthenticationMode.Active,
                AllowedAudiences = new[] { audienceId },
                IssuerSecurityKeyProviders = new IIssuerSecurityKeyProvider[] {
                    new SymmetricKeyIssuerSecurityKeyProvider(issuer, audienceSecret)
                }
            });

Это по существу заменяет «IssuerSecurityKeyProviders» вместо «IssuerSecurityTokenProviders» и «IIssuerSecurityKeyProvider» вместо «IIssuerSecurityTokenProvider».

...