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