Назад | Перейти на главную страницу

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

Моя цель - делегировать аутентификацию от моего поставщика удостоверений OIDC (с использованием Identity Server 4) в ADFS. В ADFS я также хотел бы настроить использование MFA в этом сценарии.

Согласно документы и свою интерпретацию я создал Server application клиент под AD FS -> Application Groups. Это определение дает мне идентификатор клиента и секрет клиента, что нормально, поскольку мой IDP является конфиденциальным клиентом. Делегирование работает нормально. Проблема в том, что теперь я не могу настроить политику проверки подлинности, применяемую к этому клиенту, при которой пользователь должен использовать MFA при входе в систему.

В Web Api определение клиента - единственное (в отличие от Native application и Server application), который позволяет настраивать политики аутентификации. (Видно в примере Вот). Я не понимаю, почему Web API существует как возможный тип приложения. Веб-API не будет запрашивать токен доступа или идентификатора из ADFS. Он должен только проверять токены. Но, похоже, существует некоторая зависимость (из-за шаблонов клиент-серверных приложений) между Web API и Native application или Server application.

Возможно ли и как я могу настроить конфиденциального клиента с помощью политик аутентификации?

Тем временем я нашел решение переполнение стека.

Процитировано:

Похоже, что это возможно, если определить два приложения в одной группе приложений:

The server application, which has a client secret in addition to client id
The WebAPI application, for which you can define an access policy.

Чтобы это работало, вам необходимо назначить идентификатор проверяющей стороны (идентификатор клиента серверного приложения) идентификаторам WebAPI и убедиться, что «разрешения клиента» приложения WebAPI содержат серверное приложение.

Если политика доступа не была успешно оценена, проверяющая сторона (приложение, запрашивающее аутентификацию) получит сообщение access_denied.