Настройка авторизации через сервисы SSO
Администрирование / Настройки / Настройки модулей / OAuth

К порталу можно подключить несколько сервисов SSO, для каждого из на форме авторизации при входе появится своя кнопка с названием сервиса. Для добавления нового - нажать "+Добавить"
1. Название - с таким названием будет отображать кнопка "Войти через..." на странице авторизации

2. Области (scope) - обязательно должно быть указан openid, email не обязателен, но сопоставление пользователя на портале происходит по email либо по логину из профиля.

3. Издатель (URL адрес) - адрес необходимо узнать у сервиса авторизации. Практически у всех сервисов есть возможность получить необходимые данные для настройки по ссылке /.well-known/openid-configuration

4. Token URL - так же необходимо узнать у сервиса авторизации. Эта информация есть в ответе на запрос конфигурации /.well-known/openid-configuration

5. Authorize URL - так же необходимо узнать у сервиса авторизации. Эта информация есть в ответе на запрос конфигурации /.well-known/openid-configuration

6. ID клиента - будет указано в настройках сервиса SSO при создании подключения

7. Алгоритм шифрования - список поддерживаемых алгоритмов шифрования можно узнать в конфигурации /.well-known/openid-configuration

8. Секретный ключ - будет указан в настройках сервиса SSO при создании подключения

9. Публичный ключ - используется не во всех алгоритмах шифрования, необязательно для заполнения, если он не требуется. Будет указан в настройках сервиса SSO при создании подключения

При создании подключения на стороне сервиса необходимо будет указать Redirect URL, нужно указать https://auth.hrbox.io/auth/oauth

После внесения всех настроек нужно обязательно сохранить настройки для создания этого подключения в системе, после чего можно будет выполнить окончательную настройку. Проверить подключение и получить схему для настройки сопоставления атрибутом с профилем пользователя

Пример схемы, получаемой от GitLab и настройки сопоставления - у каждого сервиса будет своя.
ID пользователя - не обязательное поле, оно сохранится в профиле пользователя если портал его получит. И в дальнейшем сопоставление при входе будет происходить в первую очередь через него.

1. E-mail пользователя - Почта авторизации пользователя, которая указана в настройках профиля в разделе авторизация - Основной E-mail

2. Логин пользователя - поле Логин в настройках авторизации.
Подключение SSO на примере сервиса GitLab
На следующей странице получаем часть необходимой информации:

1. Application ID указать в ID клиента

2. Secret копировать и вставить в Секретный ключ
Для получения остальных настроек нужно перейти по ссылке https://gitlab.com/.well-known/openid-configuration
У каждого сервиса ссылка для получения конфигурации будет своя:
issuer - Издатель (URL адрес)

authorization_endpoint - Authorize URL

token_endpoint - Token URL

id_token_signing_alg_values_supported - Поддерживаемые алгоритмы шифрования, в данном случае поддерживается только RS256

Заполнить настройки и сохранить.
Появилась возможность проверить подключение. Видим что подключение работает, и т.к. сейчас у меня уже есть токен авторизации GitLab вход уже выполнен, сервис запрашивает разрешения на авторизацию созданного подключения приложения, это нужно сделать 1 раз.
Далее нужно получить схему и настроить сопоставления полей портала с получаемыми данными. Атрибут email так и называет
Атрибут email указать в поле E-mail пользователя, nickname - Логин пользователя, sub похоже на id пользователя, можно его указать в id, но не обязательно. Для авторизации достаточно email или логина