ASP. NET Core, AddOpenIdConnect - должен ли ValidateIssuerSigningKey иметь IssuerSigningKey? - PullRequest
0 голосов
/ 18 февраля 2020

В моем приложении ASP. NET Core есть рабочая аутентификация с открытым идентификатором. Теперь я спросил себя, проверяется ли токен эмитента автоматически. Я не был уверен, поэтому я сделал это

services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
    options.MetadataAddress = Configuration.GetValue<string>("MetadataAddress");
    options.Authority = Configuration.GetValue<string>("Authority");
    options.ClientId = Configuration.GetValue<string>("ClientId");
    options.ClientSecret = Configuration.GetValue<string>("ClientSecret");

    options.TokenValidationParameters.ValidateIssuerSigningKey = true;

Теперь мне было интересно, если я установлю ValidateIssuerSigningKey в true, я должен установить IssuerSigningKey? Я не получил никакой информации в документации.

Проблема, которую я вижу, состоит в том, что алгоритм подписания может быть любым, что возможно. MetadataAddress сообщит это мне в свойстве id_token_signing_alg_values_supported, но должен ли я реализовать какой-либо возможный алгоритм? Или Microsoft IdentityModel делает это самостоятельно?

Большое спасибо!

1 Ответ

1 голос
/ 18 февраля 2020

Вам не нужно добавлять ValidateIssuerSigningKey/IssuerSigningKey, поскольку вы устанавливаете Authority / MetadataAddress, промежуточное программное обеспечение будет отвечать за получение, кэширование и обновление конфигурации из метаданных, включая ключи, которые публикуют sh по доверенному STS.

В потоках аутентификации OID C, если вы получаете токен ID от авторизации конечной точки в гибридном или неявном потоке, промежуточное ПО поможет проверить подпись и полезную нагрузку. Но в качестве документа: https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation

Если идентификационный токен получен посредством прямой связи между клиентом и конечной точкой токена, проверка сервера TLS МОЖЕТ использоваться для проверки подлинности эмитента вместо проверки токена подпись.

И посмотрите исходный код промежуточного программного обеспечения OID C, он пропустит проверку подписи, если токен ID получен от конечной точки токена.

...