Протокол OAuth 2.0
О возможности
Продукт Авторизация поддерживает регистрацию и аутентификацию пользователей по протоколу OAuth 2.0. Стандартный протокол аутентификации OAuth 2.0 ориентирован на простоту разработки клиентского приложения. OAuth 2.0 позволяет обновлять токен без участия пользователя. Подробная информация о протоколе доступна на официальном сайте. В качестве access_token используется JWT пользователя.
Сценарий взаимодействия клиента и сервера Авторизации Иксолла:
Чтобы настроить протокол OAuth 2.0:
- Подключите продукт Авторизация.
- Настройте хранилище Иксоллы или PlayFab.
- Подключите OAuth 2.0-клиент.
Подключение OAuth 2.0-клиента
- Перейдите в Личный кабинет в раздел ваш вариант авторизации > Общие настройки > Авторизация > OAuth 2.0 аутентификация.
- Нажмите Подключить.
- В модальном окне укажите:
- Название клиента.
- URI переадресации OAuth 2.0. Параметр redirect_uri для методов Login API.
- Тип аутентификации: публичная или конфиденциальная.
- Конфиденциальный клиент требует использования ID клиента и секретного ключа при вызове метода
Generate JWT для получения и обновления токена доступа. - Публичный клиент требует использования только ID клиента.
- Метод
JWT auth by username and password доступен только для публичного клиента.
- Нажмите Подключить.
Получение настроек OAuth 2.0-клиента
Чтобы получить ID клиента и секретный ключ:
- Перейдите в Личный кабинет в раздел ваш вариант авторизации > Общие настройки > Авторизация > OAuth 2.0 аутентификация.
- В блоке с клиентом нажмите Подключить/Редактировать.
Окно с этими настройкам откроется автоматически после подключения OAuth 2.0-клиента. ID клиента и секретному ключу соответствуют параметры client_id и client_secret для методов Login API. Используйте эти значения при работе с OAuth 2.0-клиентами.
Интеграция на стороне приложения
Возможны следующие варианты интеграции:
При работе с Login API и виджетом авторизации используется параметр scope. Возможные значения параметра:
- offline для обновления токена доступа. При этом в методе регистрации или аутентификации необходимо передавать scope=offline.
- email для запроса email-адреса пользователя при аутентификации через социальную сеть. Задайте это значение, если вы интегрировали продукт Авторизация через предыдущую версию виджета. См. инструкцию Сбор email-адресов при аутентификации через социальные сети.
Интеграция через виджет авторизации
Если у вас настроена интеграция через виджет авторизации:
- Для версии виджета 2.0 добавьте в код инициализации параметры client_id, response_type, state и redirect_uri. Также можно добавить параметр scope. В параметре redirect_uri необходимо указать HTTP/HTTPS-схему, например, https://example.com.
- 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>
- Для предыдущей версии виджета добавьте в код инициализации параметры redirect_uri и client_id. Также можно добавить параметр scope. В параметре redirect_uri также необходимо указать HTTP/HTTPS-схему.
- html
<script type="text/javascript">
XL.init({
projectId: 'LOGIN_PROJECT_ID',
locale: 'en_US',
redirectUri: 'REDIRECT_URI',
clientId: 'CLIENT_ID',
state: 'CUSTOM_STATE',
scope: 'SCOPE'
});
</script>
Интеграция через Login API
Для регистрации и аутентификации пользователей используйте методы API для протокола OAuth 2.0. Если вы уже интегрировали методы для стандарта JWT, замените их вызовом методов OAuth 2.0.
При вызове методов аутентификации обменяйте полученный параметр code на токен доступа.
Интеграция через Login SDK
Login SDK поддерживает аутентификацию с помощью протокола OAuth 2.0. Для настройки OAuth 2.0-клиента выберите игровой движок и следуйте инструкции:
Получение токена доступа
Чтобы получить токен доступа пользователя, используйте метод
- http
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
Обновление токена доступа
Для каждого пользователя, который успешно завершил аутентификацию, генерируется токен доступа и создается новая сессия. По умолчанию токен имеет срок действия, равный 1 часу.
Чтобы обновить токен, используйте метод
- При первом вызове с параметрами grant_type=authorization_code и code, полученным после аутентификации.
- При следующих вызовах, когда срок действия токена истечет, с параметрами grant_type=refresh_token и последним полученным значением refresh_token.
- http
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=refresh_token&refresh_token=111dfgdfgdf&redirect_uri=https://my-website.com/callback