Авторизация через OAuth2.0 / OpenIDConnect

Авторизация через OAuth2.0 / OpenIDConnect

Содержание

Аккаунт может иметь свой SSO. Мы можем работать по OAuth2.0 / OpenIDConnect флоу Authorization Code.

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


Схема работы