Авторизация / Возможности
 На главную

Авторизация

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

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

  • Инструкции

  • Расширения

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

  • Протокол OAuth 2.0

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

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

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

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

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

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

    1. Перейдите в Личный кабинет в раздел ваш вариант авторизации > Общие настройки > Авторизация > OAuth 2.0 аутентификация.
    2. Нажмите Подключить.
    3. В модальном окне укажите:
      1. Название клиента.
      2. URI переадресации OAuth 2.0. Параметр redirect_uri для методов Login API.
      3. Тип аутентификации: публичная или конфиденциальная.

    Note
    Подробная информация о типах клиентов приведена в The OAuth 2.0 Authorization Framework. При работе с Login API:
    • Конфиденциальный клиент требует использования ID клиента и секретного ключа при вызове метода Generate JWT для получения и обновления токена доступа.
    • Публичный клиент требует использования только ID клиента.
    • Метод JWT auth by username and password доступен только для публичного клиента.

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

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

    Чтобы получить ID клиента и секретный ключ:

    1. Перейдите в Личный кабинет в раздел ваш вариант авторизации > Общие настройки > Авторизация > OAuth 2.0 аутентификация.
    2. В блоке с клиентом нажмите Подключить/Редактировать.

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

    Note
    Для реализации 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.

    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>

    • Для предыдущей версии виджета добавьте в код инициализации параметры redirect_uri и client_id. Также можно добавить параметр scope. В параметре redirect_uri также необходимо указать HTTP/HTTPS-схему.

    Copy
    Full screen
    Small screen
    <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 на токен доступа.

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

    SDK Иксоллы поддерживают аутентификацию с помощью протокола OAuth 2.0. Для настройки OAuth 2.0-клиента выберите игровой движок и следуйте инструкции:

    Получение токена доступа

    Чтобы получить токен доступа пользователя, используйте метод Generate JWT с параметром grant_type=authorization_code. Параметр code, необходимый для получения токена, передается в redirect_uri после аутентификации или регистрации.

    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

    Обновление токена доступа

    Для каждого пользователя, который успешно завершил аутентификацию, генерируется токен доступа и создается новая сессия. По умолчанию токен имеет срок действия, равный 1 часу.

    Чтобы обновить токен, используйте метод Generate JWT:

    • При первом вызове с параметрами grant_type=authorization_code и code, полученным после аутентификации.
    • При следующих вызовах, когда срок действия токена истечет, с параметрами grant_type=refresh_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

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

    В другой раз

    Спасибо за обратную связь!
    Последнее обновление: 24 декабря 2020

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

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