Login / Протокол OAuth 2.0
  На главную

Login

Протокол OAuth 2.0

О возможности

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

Сценарий взаимодействия вашего OAuth 2.0-клиента и сервера Xsolla Login:

Чтобы настроить протокол OAuth 2.0:

  1. Подключите продукт Login.
  2. Настройте хранилище Xsolla, PlayFab или Firebase.
  3. Подключите OAuth 2.0-клиент.

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

  1. Откройте проект в Личном кабинете и перейдите в раздел Login.
  2. Нажмите Настроить в панели нужного варианта авторизации.
  3. Перейдите к блоку Безопасность и выберите раздел OAuth 2.0 аутентификация.
  1. Нажмите Добавить клиент OAuth 2.0.
  1. В диалоговом окне укажите:
    • Название клиента.
    • URI-адрес (или адреса) для перенаправления пользователя после подтверждения учетной записи, успешной аутентификации или подтверждения сброса пароля.
    • Тип аутентификации: публичная, конфиденциальная или серверная.
Примечание
Подробная информация о типах аутентификации (типах клиентов) приведена в статьях The OAuth 2.0 Authorization Framework и Confidential and Public Applications. Серверный и конфиденциальный типы аутентификации используют конфиденциальный клиент, но различаются по типу предоставления доступа к приложению (см. подробнее в Application Grant Types):
  • для серверной аутентификации: grant_type=client_credentials;
  • для конфиденциальной и публичной аутентификации: grant_type=authorization_code или grant_type=refresh_token.
Если вы используете интеграцию через Login API, при выборе типа аутентификации следует учесть следующие особенности:
  • Конфиденциальный клиент требует использования ID клиента и секретного ключа при вызове метода Generate JWT для получения и обновления токена доступа.
  • Публичный клиент требует использования только ID клиента.
  • Метод JWT auth by username and password доступен только для публичной аутентификации.

  1. Нажмите Подключить.

  1. Будут сгенерированы ID клиента и секретный ключ, необходимые для настройки аутентификации по протоколу OAuth 2.0 на стороне вашего приложения.

  1. В диалоговом окне скопируйте ID клиента и Секретный ключ, используя кнопки со значком копирования.

Получение настроек OAuth 2.0-клиента

Если вы не скопировали ID клиента и секретный ключ при подключении OAuth 2.0-клиента, чтобы получить доступ к этим данным:

  1. Откройте проект в Личном кабинете и перейдите в раздел Login.
  2. Нажмите Настроить в панели нужного варианта авторизации.
  3. Перейдите к блоку Безопасность и выберите раздел OAuth 2.0 аутентификация.
  4. В строке нужного OAuth 2.0-клиента:
    • Скопируйте содержимое поля ID клиента.
    • Нажмите Ключ клиента для копирования секретного ключа.

ID клиента и секретному ключу соответствуют параметры client_id и client_secret в методах Login API. Используйте эти значения при работе с OAuth 2.0-клиентами.

Примечание
Для реализации аутентификации по протоколу 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.

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

Copy
Full screen
Small screen
<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 со следующими значениями параметров:

В ответе API-метода будут возвращены следующие токены:

  • access_token — токен доступа. Срок действия по умолчанию — 1 час.
  • refresh_token — токен обновления. Срок действия не ограничен.

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

Copy
Full screen
Small screen

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, которые затем снова можно будет обновить.

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

Copy
Full screen
Small screen

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
Примечание
По умолчанию продукт Login поддерживает не более пяти одновременных сессий пользователя. При каждой новой аутентификации пользователя пара токенов access_token и refresh_token, полученная этим пользователем ранее, чем пять последних пар токенов, становится недействительной. Чтобы изменить ограничение на количество одновременных сессий пользователя, обратитесь к персональному менеджеру проекта или напишите на csm@xsolla.com.
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Последнее обновление: 20 декабря 2024

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

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