Делает ли AddJwtBearer () то, что я думаю, что делает? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь определить, предоставляет ли JwtBearer Service для .net core 3.0, использует ли он на самом деле асимметричный ключ подписи, предоставленный известной конфигурацией моих провайдеров oidc ???

Не могунайти любую документацию по этому вопросу.

.AddJwtBearer(opt =>
                    {
                        opt.Authority = "http://localhost:8180/auth/realms/master";
                        opt.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                        {
                            ValidateIssuer = true,
                            ValidateAudience = false,
                            ValidateLifetime = true,
                            ValidateIssuerSigningKey = true
                        };

Я использую Keycloak 4.8.3 в качестве моего oidc провайдера. Ближайшая документация, которую я смог найти, была здесь. https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide

Соответствующий фрагмент находится здесь:

Если вы разрешите промежуточному программному обеспечению JwtBearer автоматически конфигурировать через документ обнаружения, все это работает автоматически!

Этот код делал все это? Это все еще актуально в 3.0, так как мы больше не регистрируем промежуточное программное обеспечение ??

Бьюсь об заклад, многие люди не знают о ключах асимметричной подписи и почему они так важны. Мы настолько отвлеклись от разработчика, что теперь я даже не знаю, безопасен ли мой API.

Итак, последний вопрос. Does the .AddJwtBearer service with "ValidateIssuerSigningKey" periodically check the wellknown or whatever discovery document to grab the latest asymettric signing key?

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

Рассматривая исходный код AddJwtBearer и основываясь на моих экспериментах, Authority - это единственное свойство, которое вам нужно назначить. В этом случае обработчик будет использовать

MetadataAddress = $"{Authority}/.well-known/openid-configuration";

для разрешения URL-адреса метаданных для вашей области и загрузки оттуда ключей подписи.

1 голос
/ 08 ноября 2019

Вам не нужно устанавливать TokenValidationParameters. Если Authority, который является адресом сервера аутентификации, выдающей токен, задан правильно, промежуточное программное обеспечение канала-носителя JWT будет использовать этот URI для поиска и извлечения открытого ключа, который можно использовать для проверки подписи токена. Это также подтвердит, что параметр iss в токене соответствует этому URI. Промежуточное программное обеспечение поможет получить ключи из метаданных OIDC и кэшировать ключи.

TokenValidationParameters можно использовать в сценарии, в котором вы хотите проверить токены без доступа к серверу выдачи. Вместо этого вы хотели использовать открытый ключ, который уже присутствовал локально, для проверки входящих токенов. Тогда вы не можете установить Authority, установить ValidateIssuerSigningKey и ValidateIssuer и, наконец, установить IssuerSigningKey, который является открытым ключомдля проверки входящих токенов JWT.

...