Конфигурирование интеграции с OpenID

Данный раздел доступен, если он активирован в лицензии.

  1. Запустите сервер PassOffice с помощью файла PassOfficeSrv.bat

  2. Затем откройте браузер, в адресную строку введите адрес хоста, на котором запущен сервер PassOffice (например, localhost:80) и авторизуйтесь под учетной записью Администратора (логин и пароль Администратора задается во время установки системы)

  3. Откройте пункт меню «Администрирование / Настройки интеграции»

  4. Отредактируйте настройки интеграции OpenID, указав:

  • ADFS discovery document URL

  • Идентификатор клиента

  • Алгоритм генерации токена

  • Тип сертификата, путь до него и пароль (для SSL)

или Загрузите конфигурацию из файла (.properties, .json)

  1. Поставьте флажок Разрешать саморегистрацию, после авторизации будет создан оператор с соответствующими ролями. Укажите настройки по умолчанию.

Выберите стратегию в случае обнаружения совпадений:

  • Приоритет импортируемой системы, при расхождении данных, поля из PassOffice заменятся на поля из Active Directory, указав Что делать, если нет каких-либо данных в сторонней системе:

  • Игнорировать, если поле есть и в PassOffice и в Active Directory, то оно будет заменено на соответствующее из Active Directory. Если поле есть в PassOffice, но нет в Active Directorу, то поле останется из PassOffice.

  • Очищать в бюро пропусков, если поле есть и в PassOffice и в Active Directory, то оно будет заменено на соответствующее из Active Directory. Если поле есть в PassOffice, но нет в Active Directorу, то поле в PassOffice будет очищено.

или

  • Приоритет данных в бюро пропусков, при расхождении данных, поля из PassOffice останутся приоритетными.

  1. Укажите источник данных:

  • Active Directory или

  • JWT Token, выбрав данный источник, заполните информацию:

  • Маску даты рождения, например, dd/MM/yyyy

  • Маску ФИО, например, {name} {surname} {middlename} необходимо для того, чтобы указать в каком порядке ФИО

Далее добавьте соответствия полей и атрибутов, например:

ФИО=displayName
Имя=givenName,GivenName
Фамилия=sn
Почта=mail
Логин=userPrincipalName
Телефон=telephoneNumber
Рабочий телефон=telephoneNumber
Комната=physicalDeliveryOfficeName
Отдел=department
Должность=title
Организация=Company
Страна=co

На следующем шаге задайте Соответствие ролей, указав Название и Атрибут:

Подача заявок=requestRole
Согласование заявок=acceptRole
Выдача пропусков=issueRole
Работа с реестром=reportRole
Администрирование=adminRole
Картотека=cardlibRole
Дежурный режим=guardRole
Терминалы=terminalRole
История проходов=passHistoryRole
Изъятие пропусков=withdrawRole
Перевыдача пропусков=reissueRole
Служба безопасности=securityRole
  1. Проведите Тест соединения. Если тест проходит успешно - активируйте данные настройки соединения. В случае ошибок проверьте логи сервера PassOffice.

  2. Реактивировать/Деактивировать соединение можно с помощью соответствующих кнопок. Если после активации внесены изменения в настройки необходимо нажать «Реактивировать», чтобы применились настройки.

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

1.1. Конфигурирование сервера ADFS

В PassOffice используется стратегия авторизации implicit-grant flow.

Прежде чем использовать авторизацию OpenID, необходимо сконфигурировать сервер ADFS.

  1. Откройте утилиту ADFS Management

  2. Перейдите в папку Application Groups и создайте группу для приложения, в которой будет использована авторизация

  3. При создании группы, нужно выбрать шаблон «Web browser accessing a web application»

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

  5. После создания группы нужно добавить scope «openid» в список доступных

2. Настройка атрибутов

2.1. Настройка атрибутов в ADFS

Добавляем новые атрибуты в наш аутентификационный токен, новое правило:

Слева выбираем атрибут, предназначенный для токена, справа - название поля, в котором будет атрибут.

Название поля, в которое хотите положить атрибут, можно выбрать из существующих либо задать кастомное название. На рисунке выше задаются кастомные названия.

Также необходимо добавить заголовок Content-Security-Policy в ответ от нашего ADFS сервера. Это нужно для того, чтобы система могла обновлять аутентификационные токены при их истечении. Сделать это можно командой:

Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "frame-ancestors <адрес до PassOffice>"

Для большинства случаев данной конфигурации достаточно. Чтобы убедиться, что остальные опции, относящиеся к ADFS, настроены правильно, можно посмотреть конфигурацию вашего ADFS сервера, находящуюся по адресу: https://example.ru/adfs/.well-known/openid-configuration

3. Возможные ошибки при работе с OpenID и их решение

  1. MSIS9622 client authentication error, type: "token_error" и Failed to parse oauth token. При такой ошибке необходимо настроить политику доступа. Самое простое решение - выбрать политику Permit everyone.

  2. На странице авторизации нет опции «Авторизация через SSO». В таком случае убедитесь, что плагины, блокирующие рекламу (adblock, adguard и т.д.), выключены.

  3. Error details: MSIS9224: Received invalid OAuth authorization request. The received 'redirect_uri' parameter is not a valid registered redirect URI for the client identifier: '*******'. Received redirect_uri: 'https://example.ru/auth/login'. В таком случае, добавьте https://example.ru в список поддерживаемых адресов для перенаправления и убедитесь, что сертификаты валидны и настроены правильно.

Для рефреша токена необходимо, чтобы была разрешена работа с iframe, это можно сделать следующим образом:

Set-AdfsResponseHeaders 
    -SetHeaderName "Content-Security-Policy" 
    -SetHeaderValue "frame-ancestors http://<myapp>"

где myapp - url, где развернут PassOffice.

4. Настройка отображения ролей

Чтобы настроить отображение ролей для авторизации через OpenID, необходимо сконфигурировать клеймы. Для этого, в настройках ADFS на вкладке «Issue Transform Rules» добавьте новое правило, выбрав шаблон «Send Group Membership as a Claim».

Далее введите название правила, выберите группу в Active Directory, введите произвольное название клейма и его значение - true.

При этом в токене аутентификации будет клейм adminRole со значением true.

Задайте аналогичные правила для всех ролей, которые необходимо синхронизировать в PassOffice. Далее в настройках интеграции OpenID на вкладке «Данные» укажите соответствие ролей.

Обратите внимание, после редактирования параметров клейма, изменения вступят в силу после обновления токена (время жизни токена можно настроить на стороне ADFS командой Set-AdfsWebApiApplication -TokenLifeTime «минуты» -TargetIdentifier ). Также обновить токен можно, если выйти из аккаунта и авторизоваться заново.

Last updated