Общая настройка
В данном разделе находится инструкция по настройке авторизации через OpenID Connect с использованием ADFS (Active Directory Federation Services) для PassOffice. Эта инструкция охватывает конфигурирование ADFS, настройку атрибутов, обработку ошибок и отображение ролей.
Конфигурирование сервера ADFS
Стратегия авторизации: используется implicit-grant flow.
Создание группы приложений: в ADFS Management создайте группу приложений с шаблоном "Web browser accessing a web application".


• URL-адреса перенаправления: добавьте полный URL-адрес PassOffice в список поддерживаемых URL-адресов для перенаправления.

• Scope "openid": добавьте scope "openid" в список доступных scope для группы приложений.

2. Настройка атрибутов
• Добавление атрибутов в токен: создайте новое правило в ADFS для добавления атрибутов в токен аутентификации.

• Сопоставление атрибутов: слева выберите атрибут AD, предназначенный для токена, справа - название поля (клейма), в которое будет помещен атрибут (можно задать кастомное название).

Content-Security-Policy: добавьте заголовок Content-Security-Policy в ответ от ADFS сервера для обновления аутентификационных токенов:
Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "frame-ancestors [адрес до PassOffice]"
Проверка конфигурации: убедитесь, что остальные опции ADFS настроены правильно, проверив конфигурацию по адресу:
https://example.ru/adfs/.well-known/openid-configuration
. Заменитеexample.ru
на ваш домен.
3. Возможные ошибки при работе с OpenID и их решение
• MSIS9622 client authentication error и Failed to parse oauth token: настройте политику доступа в ADFS (самое простое решение - Permit everyone). Примечание: "Permit everyone" не рекомендуется для продакшена. Следует использовать более безопасные методы, основанные на группах пользователей или других критериях.
• Нет опции "Авторизация через SSO" на странице авторизации: отключите плагины, блокирующие рекламу (adblock, adguard и т.д.).
• MSIS9224: Received invalid OAuth authorization request...Received redirect_uri: добавьте https://example.ru
(или ваш URL) в список поддерживаемых адресов для перенаправления и убедитесь, что сертификаты валидны и настроены правильно.
• Проблемы с рефрешем токена (iframe): Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "frame-ancestors http://[myapp]"
где [myapp]
- URL, где развернут PassOffice. Используйте HTTPS вместо HTTP в продакшене.
4. Настройка отображения ролей (Клеймы):
• Добавление правила для групп: в настройках ADFS на вкладке "Issue Transform Rules" добавьте новое правило

выбрав шаблон «Send Group Membership as a Claim».

• Настройка клейма:
Введите название правила.
Выберите группу в Active Directory, определяющую роль.
Введите произвольное название клейма (например,
adminRole
).Установите значение клейма в
true
. Например, клеймadminRole
со значениемtrue
будет означать, что пользователь имеет права администратора.


• Повторите для всех ролей: задайте аналогичные правила для всех ролей, которые необходимо синхронизировать в PassOffice.
• Обновление токена: Изменения вступят в силу после обновления токена (время жизни токена настраивается командой Set-AdfsWebApiApplication -TokenLifeTime «минуты» -TargetIdentifier
). Обновить токен можно, выйдя из аккаунта и авторизовавшись заново.
Синхронизация ролей оператора в Active Directory:
• Фоновая задача/ручная синхронизация: используйте фоновую задачу "Импорт операторов" или синхронизируйте вручную в разделе "Администрирование - Операторы". Должны быть заданы соответствующие роли в настройках интеграции на вкладке "Роли".
• Синхронизация при авторизации через OpenID: для каждой роли укажите название клейма, который приходит с сервера Active Directory. Например, если есть клейм requestRole
и его значение – true
, оператору при авторизации будет доступна роль "Подача заявок".
Last updated
Was this helpful?