Библиотека проверки токенов доступа Identity Server 3 не может проверить токены, сгенерированные из Identity Server 4 - PullRequest
4 голосов
/ 02 марта 2020

У меня есть сервер удостоверений, разработанный на сервере удостоверений 4 (v3.1.2), и веб-API. NET, разработанный на .NET Framework 4.6. В веб-API я использую библиотеку проверки токенов доступа Identity Server 3 (v2.14.0) для проверки токенов входящего запроса.

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

public class Startup
{
    public void Configuration(IAppBuilder app)
    {

        app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
        {
            Authority = "http://localhost:9080/IdentityServer"
        });

        var config = new HttpConfiguration();
        config.MapHttpAttributeRoutes();

        app.UseWebApi(config);
    }
}

Однако, чтобы выяснить, является ли это проблемой между токенами Identity Server 4 и Identity Server 3 токен доступа библиотека проверки, я создал отдельный сервер Identity с библиотекой Identity Server 3 (v2.6.3) и предоставил токен, сгенерированный из него для того же веб-API, который я использовал ранее (тот же Startup.cs, что и выше).

Этот запрос был успешно авторизован, и все работали, как ожидалось.

Мой вопрос:

Можно ли использовать токен с сервера идентификации 4 для проверки с использованием удостоверения сервер 3 доступа к библиотеке проверки токенов? или я что-то не так делаю?

1 Ответ

0 голосов
/ 03 марта 2020

Я не уверен, но, по-моему, неверный URL вашего органа. У меня был такой же сценарий, как и у вас, и я решил его с помощью IdentityServer3.AccessTokenValidation пакета NuGet, и он работает отлично. Поэтому я уверен, что ваша проблема не связана с промежуточным программным обеспечением.

Попробуйте заменить приведенный ниже код в файле startup.cs, и все будет работать.

public class Startup
{
    public void Configuration(IAppBuilder app)
    {

        IdentityServerBearerTokenAuthenticationOptions options = new IdentityServerBearerTokenAuthenticationOptions
            {
                Authority = "http://localhost:9080",
                AuthenticationType = "Bearer"
            };

        app.UseIdentityServerBearerTokenAuthentication(options);

        var config = new HttpConfiguration();
        config.MapHttpAttributeRoutes();

        app.UseWebApi(config);
    }
}

Я надеюсь, что это разрешит Ваша проблема!

...