Менеджерам обучения
API и интеграции
Авторизация через OAuth2.0 / OpenIDConnect

Авторизация через 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 становятся сразу активированными. Для этого нужно в настройках разрешить регистрацию новых пользователей, иначе если пользователь будет не найден вернется ошибка.

Схема работы