Авторизация через OAuth2.0 / OpenIDConnect
Аккаунт может иметь свой SSO. Мы можем работать по OAuth2.0 / OpenIDConnect флоу Authorization Code (opens in a new tab).
Для настройки нужно зайти в аккаунт, перейти в Настройки, далее выбрать "API и интеграции" и раскрыть "oAuth2 / OpenID Connect"
Обязательные поля
-
Хост сервера авторизации - адрес по которому будет доступен сервис клиента
-
uid auth id - публичный ключ oauth приложения, который должен заполнить клиент
-
Секретный ключ - секретный ключ от oauth приложения, который должен заполнить клиент. Нужен для получения токена
Наш callback url
/auth/sso/oauth/callback
Опции
-
Перенаправлять пользователей на авторизацию через oAuth на странице логина - это опция на входе в Teachbase отправляет на вход через клиентский сервис минуя нашу страницу входа
-
OpenID connect - говорит о том, что мы будем работать по этому протоколу, иначе по OAuth2.0
-
Авторизированный url - куда будет перенаправлен пользователь для старта входа через провайдера
-
Токен url - адрес по которому можно будет получить токен
-
url эндпоинта информации о пользователе - адрес по которому можно будет запросить данные пользователя с полученным токеном. Мы отправляем GET запрос
Если мы работаем по OpenID, то там получение данных пользователя описаны в спецификации и как правило будут одинаковыми. Но если мы работаем по OAuth2.0, то после получение токена, наша система отправит GET запрос с заголовком Authorization: Bearer
token
наurl info endpoint url
для получения данных о пользователе, чтобы можно было по email или phone найти такого в системе и выполнить вход. Сервер SSO должен вернуть JSON объект пользователя, например{"id": 123, "email": "example@example.ru"}
Настройка OpenID
Если клиентский сервис поддерживает OpenId Connect Discovery (получение конфигурации через /.well-known/openid-configuration) то нужно только включить OpenID и заполнить Хост сервера авторизации, uid auth id, Секретный ключ.
Иначе нужно будет настроить Авторизированный url, Токен url, url эндпоинта информации о пользователе
Опции
Параметр ключа для end_session_endpoint (OpenId) - Если этот параметр будет заполнен, то при входе запоминается uid сессии провайдера, и после выхода из LMS пользователь будет перенаправлен на end_session_endpoint
, полученный из конфигурации выше.
Настройка OAuth2
Заполнить Хост сервера авторизации, uid auth id, Секретный ключ, Авторизированный url, Токен url, url эндпоинта информации о пользователе
Еще может понадобится заполнить Скоупы oAuth2, это клиент указывает самостоятельно.
Соответствие полей.
При создании пользователя мы пытаемся получить данные:
- Имя
- Фамилию
- Адрес электронной почты
- Телефон
- ID внешней системы
По умолчанию взяты значения из спецификации Open ID
email: "email", name: "given_name", last_name: "family_name", phone: "phone_number", uid: "sub"
Но можно назначить из каких полей что получать, настраивается это в этой же форме
Обратите внимание
Обновление пользователя
Пользователь не обновляется. Например если он один раз зашел с именем Иван и почтой ivan@pochta.ru
, то если провайдер будет присылать новое имя, но старую почту, LMS просто найдет его по почте, не обновляя данные.
Активация
Пользователи которые попадают через SSO становятся сразу активированными. Для этого нужно в настройках разрешить регистрацию новых пользователей, иначе если пользователь будет не найден вернется ошибка.