Сквозная аутентификация
Как это работает
Если у вас есть несколько связанных сервисов, на которых пользователь авторизуется под одним аккаунтом, вы можете использовать сквозную аутентификацию (Single Sign-On/SSO). В качестве сервиса выступает веб-сайт игры. Это позволит пользователю вводить данные аутентификации только один раз. При переходе на один из связанных сервисов пользователь уже будет авторизован.
Сценарий взаимодействия
- Неавторизованный пользователь переходит на один из сервисов.
- Ваш клиент отправляет запрос
Check user authentication на сервер Xsolla Login и получает ошибку 401. - Ваш клиент отображает форму авторизации (виджет авторизации или ваш интерфейс) для пользователя.
- Пользователь выполняет аутентификацию по имени пользователя и паролю или через социальную сеть.
- Ваш клиент выполняет аутентификацию пользователя в вашем варианте авторизации:
- При интеграции через методы API используются следующие запросы:
- При интеграции через виджет авторизации для запросов используется протокол OAuth 2.0.
login_uri
, содержащийredirect_uri
вместе сcode
в query-параметре.
- Ваш клиент перенаправляет пользователя на
redirect_uri
. - Ваш сервер отправляет запрос
Generate JWT для обмена полученногоcode
на JWT. Пользователь авторизован на сервисе. - Пользователь переходит на другой сервис.
- Ваш клиент отправляет запрос
Check user authentication на сервер Xsolla Login и получаетlogin_uri
, содержащийredirect_uri
вместе ccode
в query-параметре. - Ваш сервер отправляет запрос
Generate JWT для обмена полученногоcode
на JWT. Пользователь авторизован на втором сервисе.
Разделение прав доступа для разных сервисов
Чтобы обеспечить разделение прав доступа к аккаунту пользователя для разных сервисов, вы можете использовать в разных OAuth 2.0 клиентах специальные значения параметраscope=playfab
.Для кого подходит
Для партнеров, у которых уже подключен продукт Login и используется хранилище Xsolla, Firebase или PlayFab.
Как настроить
Чтобы подключить сквозную аутентификацию:
- Подключите протокол OAuth 2.0.
- Реализуйте вызов метода получения сессии пользователя.
Подключение протокола OAuth 2.0
Воспользуйтесь инструкцией для подключения протокола OAuth 2.0. Вы можете использовать один OAuth 2.0 клиент для всех сервисов или создать отдельный OAuth 2.0 клиент для каждого сервиса.Вызов метода получения сессии пользователя
Реализуйте вызов метода
Пример запроса:
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'
Пример ответа, когда пользователь авторизован:
- http
HTTP/1.1 200 OK
Content-Type: application/json
{
"login_url": "<redirect_uri>?code=<code>"
}
Чтобы получить JWT пользователя:
- Ваш клиент реализует и использует метод, который перенаправляет пользователя на полученный
redirect_uri
. - Ваш сервер отправляет запрос
Generate JWT с полученнымcode
иgrant_type=authorization_code
для получения JWT.
Пример ответа, когда пользователь не авторизован:
- http
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"error": {
"code": "003-040",
"description": "User is unauthorized."
}
}
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.