Миграция ASP. NET Framework на ASP. NET Core 3.1 с аутентификацией JWT Bearer из ADFS - PullRequest
1 голос
/ 10 февраля 2020

ASP. NET Framework

У нас есть существующий веб-сайт ASP. NET Framework, который выполняет аутентификацию с использованием ActiveDirectoryFederationServicesBearerAuthentication:

    app.UseActiveDirectoryFederationServicesBearerAuthentication(
            new ActiveDirectoryFederationServicesBearerAuthenticationOptions
            {
                MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
                TokenValidationParameters =
                    new TokenValidationParameters
                    {
                        ValidAudience = ConfigurationManager.AppSettings["ida:Audience"],
                        RequireSignedTokens = true
                    }
            });

Значение "ida: AdfsMetadataEndpoint "is:

https: // /FederationMetadata/2007-06/FederationMetadata.xml

У нас есть сервер ADFS 3.0 ( работает на Windows Server 2012 R2), выдавая эти токены JWT.

ASP. NET Core 3.1

Поскольку мы переносим наш веб-сервер через til ASP. NET Core 3.1, мы хотим продолжать использовать тот же сервер ADFS 3.0 для выдачи токенов JWT на наш веб-сайт.

Но у меня возникают проблемы при настройке нового сервера для проверки токенов с сервера ADFS 3.0. Вот что я попробовал:

JwtBearerAuthentication

Насколько я понимаю, для JwtBearerAuthentication требуется ADFS 4.0, которая поддерживает OpenIDConnect?

Я нашел этот обходной путь, который должен работать в моем случае, но кажется немного хакерским для сохранения ключа подписи эмитента в моем приложении. Что если это изменится в ADFS?

WsFederationAuthentication

Я следовал этому руководству , но мне кажется, что это не поддерживает аутентификацию на предъявителя?

Заключение

Что такое ядро ​​ASP. NET, эквивалентное ActiveDirectoryFederationServicesBearerAuthentication с использованием маркеров переноса JWT, выпущенных из ADFS 3.0?

1 Ответ

0 голосов
/ 11 февраля 2020

ADFS 2012 R2 может выдавать токены JWT, но не поддерживает обнаружение OID C, оно не предоставляет метаданные с использованием функции обнаружения openid connect c. Таким образом, вы можете использовать расширение AddJwtBearer в asp. net core web api, но вам нужно вручную настроить эмитента, аудиторию и ключ подписи в качестве обходного пути, который вы предоставляете, и здесь . Конечно, если вы можете обновить свой экземпляр ADFS до «4.0», что облегчит реализацию сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...