Login / Сквозная аутентификация
  На главную

Login

Сквозная аутентификация

Как это работает

Если у вас есть несколько связанных сервисов, на которых пользователь авторизуется под одним аккаунтом, вы можете использовать сквозную аутентификацию (Single Sign-On/SSO). В качестве сервиса выступает веб-сайт игры. Это позволит пользователю вводить данные аутентификации только один раз. При переходе на один из связанных сервисов пользователь уже будет авторизован.

Сценарий взаимодействия

  1. Неавторизованный пользователь переходит на один из сервисов.
  2. Ваш клиент отправляет запрос Check user authentication на сервер Xsolla Login и получает ошибку 401.
  3. Ваш клиент отображает форму авторизации (виджет авторизации или ваш интерфейс) для пользователя.
  4. Пользователь выполняет аутентификацию по имени пользователя и паролю или через социальную сеть.

  1. Ваш клиент выполняет аутентификацию пользователя в вашем варианте авторизации:
    • При интеграции через методы API используются следующие запросы:
      • Аутентификация по имени пользователя и паролю (JWT и OAuth 2.0).
      • Аутентификация через социальные сети (JWT и OAuth 2.0).
    • При интеграции через виджет авторизации для запросов используется протокол OAuth 2.0.
    В ходе аутентификации сессия пользователя запоминается на сервере Xsolla Login. Сервер отправляет login_uri, содержащий redirect_uri вместе с code в query-параметре.

  1. Ваш клиент перенаправляет пользователя на redirect_uri.
  2. Ваш сервер отправляет запрос Generate JWT для обмена полученного code на JWT. Пользователь авторизован на сервисе.
  3. Пользователь переходит на другой сервис.
  4. Ваш клиент отправляет запрос Check user authentication на сервер Xsolla Login и получает login_uri, содержащий redirect_uri вместе c code в query-параметре.
  5. Ваш сервер отправляет запрос Generate JWT для обмена полученного code на JWT. Пользователь авторизован на втором сервисе.

Разделение прав доступа для разных сервисов

Чтобы обеспечить разделение прав доступа к аккаунту пользователя для разных сервисов, вы можете использовать в разных OAuth 2.0 клиентах специальные значения параметра scope, например scope=playfab.

Для кого подходит

Для партнеров, у которых уже подключен продукт Login и используется хранилище Xsolla, Firebase или PlayFab.

Как настроить

Чтобы подключить сквозную аутентификацию:

  1. Подключите протокол OAuth 2.0.
  2. Реализуйте вызов метода получения сессии пользователя.

Подключение протокола OAuth 2.0

Воспользуйтесь инструкцией для подключения протокола OAuth 2.0. Вы можете использовать один OAuth 2.0 клиент для всех сервисов или создать отдельный OAuth 2.0 клиент для каждого сервиса.

Вызов метода получения сессии пользователя

Реализуйте вызов метода Check user authentication при переходе на ваш сервис. Запрос должен выполниться до отображения формы авторизации. Для аутентификации используйте параметры OAuth 2.0 клиента именно того сервиса, на котором пользователь хочет авторизоваться.

Пример запроса:

Copy
Full screen
Small screen

http

  • http
  • curl
GET https://login.xsolla.com/api/oauth2/sso?client_id=<client_id>&redirect_uri=<redirect_uri>&scope=<scope>&state=<state>&response_type=code HTTP/1.1
curl --request GET \
  --url 'https://login.xsolla.com/api/oauth2/sso?redirect_uri=redirect_uri&response_type=code&state=state&scope=scope&client_id=client_id'

Пример ответа, когда пользователь авторизован:

Copy
Full screen
Small screen
HTTP/1.1 200 OK
Content-Type: application/json

{
  "login_url": "<redirect_uri>?code=<code>"
}

Чтобы получить JWT пользователя:

  1. Ваш клиент реализует и использует метод, который перенаправляет пользователя на полученный redirect_uri.
  2. Ваш сервер отправляет запрос Generate JWT с полученным code и grant_type=authorization_code для получения JWT.

Пример ответа, когда пользователь не авторизован:

Copy
Full screen
Small screen
HTTP/1.1 401 Unauthorized
Content-Type: application/json

{
  "error": {
    "code": "003-040",
    "description": "User is unauthorized."
  }
}
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Последнее обновление: 31 июля 2024

Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.

Сообщите о проблеме
Мы постоянно улучшаем качество нашей документации. Ваш отзыв поможет нам в этом.
Укажите email-адрес, чтобы мы могли связаться с вами
Спасибо за обратную связь!