Авторизация / Протокол OAuth 2.0
 На главную

Авторизация

  • Руководство по интеграции

  • Хранилище данных пользователей

  • Безопасность

  • Кастомизация

  • Провайдеры коммуникационных услуг

  • Возможности

  • Инструкции

  • Расширения

  • Справочники

  • Протокол OAuth 2.0

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

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

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

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

    1. Подключите продукт Авторизация.
    2. Настройте хранилище Иксоллы, PlayFab или Firebase.
    3. Подключите OAuth 2.0-клиент.

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

    1. Откройте ваш проект в Личном кабинете и перейдите в раздел Авторизация.
    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. Откройте ваш проект в Личном кабинете и перейдите в раздел Авторизация.
    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 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 на токен доступа.

    Интеграция через SDK Иксоллы

    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

    Примечание
    По умолчанию продукт Авторизация поддерживает не более пяти одновременных сессий пользователя. При каждой новой аутентификации пользователя пара токенов access_token и refresh_token, полученная этим пользователем ранее, чем пять последних пар токенов, становится недействительной. Чтобы изменить ограничение на количество одновременных сессий пользователя, обратитесь к аккаунт-менеджеру проекта.
    Была ли статья полезна?
    Спасибо!
    Что может сделать страницу еще лучше? Сообщение
    Жаль, что так произошло
    Расскажите, почему статья не была полезна. Сообщение
    Спасибо за обратную связь!
    Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
    Оценить страницу
    Оценить страницу
    Что может сделать страницу еще лучше?

    В другой раз

    Спасибо за обратную связь!
    Последнее обновление: 8 августа 2022

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

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