Как проверить учетные данные для подписи x509 с IdentityServer4 - PullRequest
0 голосов
/ 07 мая 2019

У меня есть два .Net Core API - сервер авторизации, который выдает токен идентификации JWT с помощью IdentityServer4, и ресурсный API, который защищен и требует этот токен.

Сервер аутентификации использует самозаверяющийсертификат x509 (на данный момент).

На сервере аутентификации у меня есть что-то вроде этого в ConfigureServices:

var certificate = new X509Certificate2(//path.to.my.certificate//);
services.AddIdentityServer().AddSigningCredential(certificate)

Но мое понимание того, как API ресурса будет проверять учетные данные подписинепонятно.

Все, что у меня есть в ConfigureServices для API ресурса:

services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
                    .AddIdentityServerAuthentication(
                    options =>
                    {
                        options.Authority = "//MyAuthAPI";
                    });

Должен ли API ресурса использовать тот же сертификат для проверки токена JWT?Это необходимо?

Если да, то как это сделать?

1 Ответ

1 голос
/ 08 мая 2019

В основном промежуточное ПО ASP.Net Core загружает конфигурацию провайдера идентификации из https://{yourDomain}/.well-known/openid-configuration, которая является вашим options.Authority URI.Если вы действительно перейдете к одному под URL https://{yourDomain}/.well-known/openid-configuration/jwks, вы также увидите, что провайдер идентификации публикует открытый ключ, который он использует для подписи токенов.

После получения открытого ключа промежуточное программное обеспечение может проверить, действительно ли токены были выданы ожидаемым пользователем с помощью заголовков (Authorize : Bearer {token}), включенных в запросы API, с использованием обычных методов проверки асимметричного шифрования.

...