ADFS (Active Directory Federation Services) — это возможность Windows Server, которая обеспечивает решение идентификации доступа. В качестве стандарта для взаимодействия компонентов федерации, проверяющих сторон и клиентских приложений используется спецификация WS-Federation, в качестве транспорта используется протокол HTTPS.
При установке в ADFS плагина аутентификации его возможно подключить к Avanpost FAM в качестве отдельного приложения, управляя сценарием аутентификации.
В данной статье рассмотрен вопрос настройки для механизма аутентификации посредством использования плагина ADFS.
К моменту осуществления настройки должны быть выполнены следующие требования:
- На сервере установлена и настроена AD, а также заведены пользователи, которые состоят в нужных группах.
- Выполнены требования к службам федерации AD.
- На сервере должно быть установлено корректное время.
Установка и настройка на стороне плагина ADFS
- Скачать и распаковать на рабочую машину актуальную версию архива из репозитория.
- Из корня папки распакованного архива открыть для редактирования файл App.config.
3. Внести изменения в файл App.config, согласно таблице значений.
Redirect URL и clientid следует скопировать из настроек в административной панели.
Пример и таблица параметров файла App.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <!-Avanpost configs-> <add key="clientid" value="adfs-test" /> <add key="secret" value="adfs-test-secret" /> <add key="redirectUrl" value="https://<домен>" /> <add key="authEndpoint" value="https://<домен>/oauth2/authorize" /> - <add key="tokenEndpoint" value="https://<домен>/oauth2/token" /> - секция token endpoint из https://<домен>//.well-known/openid-configuration <!-/Avanpost configs-> </appSettings> </configuration>
Параметр | Значение |
---|---|
clientid | Значение clientid приложения, следует скопировать из административной консоли |
secret | Секрет приложения |
redirectUrl | URL для редиректа, должен совпадать с URL, указанным для страницы входа |
authEndpoint | Значение секции authorize endpoint из файла по адресу https://<домен>//.well-known/openid-configuration |
tokenEndpoint | Значение секции token endpoint из https://<домен>//.well-known/openid-configuration |
Важно
Значения элементов секрета в указанной реализации не должны содержать следующие комбинации символов: "--" (двойное тире); "/*" (косая черта, звездочка); "&#" (амперсанд решетка).
4. Далее следует открыть Windows PowerShell с параметром Запуск от имени администратора. В PowerShell выполнить команду с правами администратора и установить значение value == "true" к следующей ссылке для включения MFA:
http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork
Set-AdfsAdditionalAuthenticationRule –AdditionalAuthenticationRules 'c:[type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "true"] => issue(type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value = "http://schemas.microsoft.com/claims/multipleauthn" );'
5. Выполнить install.cmd, находящийся в папке архива, от имени администратора. Получить сообщения об ожидании остановки службы ADFS.
Если возникают ошибки при установке, проверьте, что скрипты выполнены от имени администратора.
6. В панели управления ADFS перейти на вкладку "Методы проверки подлинности", выбрать "Изменить Методы многофакторной проверки подлинности" и включить метод "Avanpost" на вкладке "Дополнительно".
Проверка настройки
Для проверки настройки необходимо открыть тестовую страницу https://<домен>/adfs/ls/idpinitiatedsignon в браузере, подставив вместо "домен" имя домена, указанное в параметре redirectUrl:
- При переходе по ссылке должно появиться окно для ввода учетных данных.
2. Должно появиться сообщение об успешной авторизации.
3. Ввести данные для аутентификации во всплывающем окне.
Ошибки, связанные с работой компонента, можно посмотреть на сервере ADFS в журнале Windows.
Если не прогружается iframe с окном второго фактора, то необходимо добавить домен в исключения политики безопасности содержимого, разрешив ему открываться во фрейме.
Это можно сделать следующей PowerShell командой, запущенной от роли администратора:
Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:; frame-src *"
Также эту команду следует выполнить, если появляется ошибка следующего содержания:
Refused to frame 'https://____.ru/' because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'frame-src' was not explicitly set, so 'default-src' is used as a fallback."
Если возникает ошибка, связанная с запретом встраивания фрейма с другого ресурса (заголовок X-Frame-Options: DENY), то следует внести в nginx на машине, где установлен FAM, следующее правило:
location / { proxy_pass http://127.0.0.1:4008; add_header X-Frame-Options SAMEORIGIN; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
Обновление параметров
В панели управления ADFS перейти на вкладку "Методы проверки подлинности", выбрать "Изменить Методы многофакторной проверки подлинности" и выключить метод "Avanpost" на вкладке "Дополнительно".
2. Выполнить файл remove.cmd из папки архива от имени администратора, дождаться запроса на удаление, подтвердить удаление (нажав "y").
3. Загрузить обновленный модуль/изменить файл конфигурации, придерживаясь п.2 из раздела Настройка данной инструкции.
4. Выполнить файл install.cmd от имени администратора. Получить сообщения об ожидании остановки службы ADFS.
5. В панели управления ADFS перейти на вкладку "Методы проверки подлинности", выбрать "Изменить Методы многофакторной проверки подлинности" и включить метод "Avanpost" на вкладке "Дополнительно".