Протокол OAuth 2.0
О возможности
Продукт Login поддерживает регистрацию и аутентификацию пользователей по протоколу OAuth 2.0. Стандартный протокол авторизации OAuth 2.0 ориентирован на простоту разработки клиентского приложения. OAuth 2.0 позволяет обновлять токен без участия пользователя. Подробная информация о протоколе доступна на официальном сайте. В качестве токена доступа используется JWT пользователя.
Сценарий взаимодействия вашего OAuth 2.0-клиента и сервера Xsolla Login:
Чтобы настроить протокол OAuth 2.0:
- Подключите продукт Login.
- Настройте хранилище Xsolla, PlayFab или Firebase.
- Подключите OAuth 2.0-клиент.
Подключение OAuth 2.0-клиента
- Откройте проект в Личном кабинете и перейдите в раздел Login.
- Нажмите Настроить в панели нужного варианта авторизации.
- Перейдите к блоку Безопасность и выберите раздел OAuth 2.0 аутентификация.
- Нажмите Добавить клиент OAuth 2.0.
- В диалоговом окне укажите:
- Название клиента.
- URI-адрес (или адреса) для перенаправления пользователя после подтверждения учетной записи, успешной аутентификации или подтверждения сброса пароля.
- Тип аутентификации: публичная, конфиденциальная или серверная.
- для серверной аутентификации:
grant_type=client_credentials
; - для конфиденциальной и публичной аутентификации:
grant_type=authorization_code
илиgrant_type=refresh_token
.
- Конфиденциальный клиент требует использования ID клиента и секретного ключа при вызове метода Generate JWT для получения и обновления токена доступа.
- Публичный клиент требует использования только ID клиента.
- Метод JWT auth by username and password доступен только для публичной аутентификации.
- Нажмите Подключить.
- Будут сгенерированы ID клиента и секретный ключ, необходимые для настройки аутентификации по протоколу OAuth 2.0 на стороне вашего приложения.
- В диалоговом окне скопируйте ID клиента и Секретный ключ, используя кнопки со значком копирования.
Получение настроек OAuth 2.0-клиента
Если вы не скопировали ID клиента и секретный ключ при подключении OAuth 2.0-клиента, чтобы получить доступ к этим данным:
- Откройте проект в Личном кабинете и перейдите в раздел Login.
- Нажмите Настроить в панели нужного варианта авторизации.
- Перейдите к блоку Безопасность и выберите раздел OAuth 2.0 аутентификация.
- В строке нужного OAuth 2.0-клиента:
- Скопируйте содержимое поля ID клиента.
- Нажмите Ключ клиента для копирования секретного ключа.
ID клиента и секретному ключу соответствуют параметры client_id
и client_secret
в методах Login API. Используйте эти значения при работе с OAuth 2.0-клиентами.
Интеграция на стороне приложения
Возможны следующие варианты интеграции:
При работе с Login API и виджетом авторизации используется параметр scope
. Возможные значения параметра:
offline
для обновления токена доступа. В метод регистрации или аутентификации передайтеscope=offline
.email
для запроса email-адреса пользователя при аутентификации через социальную сеть. Если вы интегрировали продукт Login через Login API, в метод регистрации или аутентификации передайтеscope=email
. При интеграции через виджет авторизации настройте сбор email-адресов пользователей с помощью инструкции Сбор email-адресов и номеров телефонов.
Интеграция через виджет авторизации
Если у вас настроена интеграция через виджет авторизации, добавьте в код инициализации параметры client_id
, response_type
, state
и redirect_uri
. В параметре redirect_uri
необходимо указать значение, которое было задано при подключении OAuth 2.0-клиента в Личном кабинете. Также можно добавить параметр scope
.
Пример запроса:
- html
<script>
const xl = new XsollaLogin.Widget({
projectId: 'LOGIN_PROJECT_ID',
preferredLocale: 'en_US',
clientId: 'CLIENT_ID',
responseType: 'code',
state: 'CUSTOM_STATE',
redirectUri: 'REDIRECT_URI',
scope: 'SCOPE'
});
</script>
Интеграция через Login API
Для регистрации и аутентификации пользователей используйте методы API для протокола OAuth 2.0. Если вы уже интегрировали методы для стандарта JWT, замените их вызовами методов OAuth 2.0.
При вызове методов аутентификации обменяйте полученный параметр code
на токен доступа.
Интеграция через Xsolla SDK
Xsolla SDK поддерживают аутентификацию с помощью протокола OAuth 2.0. Для настройки OAuth 2.0-клиента выберите игровой движок или платформу и следуйте инструкции:Получение токена доступа
Чтобы получить токен доступа пользователя, используйте метод Generate JWT со следующими значениями параметров:
authorization_code
для параметраgrant_type
;offline
для параметраscope
(необходимо для последующего обновления токена доступа);client_id
— значение параметра настройки OAuth 2.0-клиента;client_secret
— значение параметра настройки OAuth 2.0-клиента (не требуется для публичного OAuth 2.0-клиента);redirect_uri
— значение, которое было задано при подключении OAuth 2.0-клиента в Личном кабинете;code
, полученный после успешной аутентификации или регистрации пользователя в приложении.
В ответе API-метода будут возвращены следующие токены:
access_token
— токен доступа. Срок действия по умолчанию — 1 час.refresh_token
— токен обновления. Срок действия не ограничен.
Пример запроса:
http
- http
- curl
POST https://login.xsolla.com/api/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
client_id=11&client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&code=ldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&grant_type=authorization_code&redirect_uri=https://my-website.com/callback
curl --request POST \
--url https://login.xsolla.com/api/oauth2/token \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=authorization_code \
--data client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik \
--data client_id=11 \
--data redirect_uri=https://my-website.com/callback \
--data code=ldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik
Обновление токена доступа
По истечении срока действия токена доступа используйте для его обновления метод Generate JWT с параметром grant_type
, равным refresh_token
, и последним полученным значением токена обновления (refresh_token
).
В ответе API-метода будет возвращена новая пара токенов: токен доступа access_token
и токен обновления refresh_token
, которые затем снова можно будет обновить.
Пример запроса:
http
- http
- curl
POST https://login.xsolla.com/api/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
client_id=11&client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&grant_type=refresh_token&refresh_token=111dfgdfgdf&redirect_uri=https://my-website.com/callback
curl --request POST \
--url https://login.xsolla.com/api/oauth2/token \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=refresh_token \
--data client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik \
--data client_id=11 \
--data redirect_uri=https://my-website.com/callback \
--data refresh_token=111dfgdfgdf
access_token
и refresh_token
, полученная этим пользователем ранее, чем пять последних пар токенов, становится недействительной. Чтобы изменить ограничение на количество одновременных сессий пользователя, обратитесь к персональному менеджеру проекта или напишите на csm@xsolla.com.Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.