Общая настройка

В данном разделе находится инструкция по настройке авторизации через OpenID Connect с использованием ADFS (Active Directory Federation Services) для PassOffice. Эта инструкция охватывает конфигурирование ADFS, настройку атрибутов, обработку ошибок и отображение ролей.

  1. Конфигурирование сервера 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?