Авторизация / Сквозная аутентификация
 На главную

Авторизация

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

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

  • Инструкции

  • Расширения

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

  • Сквозная аутентификация

    Как это работает

    Если у вас есть несколько связанных сервисов, на которых пользователь авторизуется под одним аккаунтом, вы можете использовать сквозную аутентификацию (Single Sign-On/SSO). В качестве сервиса выступает веб-сайт игры. Это позволит пользователю вводить данные аутентификации только один раз. При переходе на один из связанных сервисов пользователь уже будет авторизован.

    Сценарий взаимодействия

    1. Неавторизованный пользователь переходит на один из сервисов.
    2. Ваш клиент отправляет запрос Check user authentication на сервер Авторизации Иксолла и получает ошибку 401.
    3. Ваш клиент отображает форму авторизации (виджет авторизации или ваш интерфейс) для пользователя.
    4. Пользователь выполняет аутентификацию по имени пользователя и паролю или через социальную сеть.

    1. Ваш клиент выполняет аутентификацию пользователя в вашем варианте авторизации:
      • При интеграции через методы API используются следующие запросы:
        • Аутентификация по имени пользователя и паролю (JWT и OAuth 2.0).
        • Аутентификация через социальные сети (JWT и OAuth 2.0).
      • При интеграции через виджет авторизации для запросов используется протокол OAuth 2.0.
      В ходе аутентификации сессия пользователя запоминается на сервере Авторизации Иксолла. Сервер отправляет login_uri, содержащий redirect_uri вместе с code в query-параметре.

    1. Ваш клиент перенаправляет пользователя на redirect_uri.
    2. Ваш сервер отправляет запрос Generate JWT для обмена полученного code на JWT. Пользователь авторизован на сервисе.
    3. Пользователь переходит на другой сервис.
    4. Ваш клиент отправляет запрос Check user authentication на сервер Авторизации Иксолла и получает login_uri, содержащий redirect_uri вместе c code в query-параметре.
    5. Ваш сервер отправляет запрос Generate JWT для обмена полученного code на JWT. Пользователь авторизован на втором сервисе.

    Разделение прав доступа для разных сервисов

    Чтобы обеспечить разделение прав доступа к аккаунту пользователя для разных сервисов, вы можете использовать в разных OAuth 2.0 клиентах специальные значения параметра scope, например scope=playfab.

    Для кого подходит

    Для партнеров, у которых уже подключен продукт Авторизация и используется хранилище Хранилище Иксоллы или PlayFab.

    Как настроить

    Чтобы подключить сквозную аутентификацию:

    1. Подключите протокол OAuth 2.0.
    2. Реализуйте вызов метода получения сессии пользователя.

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

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

    Вызов метода получения сессии пользователя

    Реализуйте вызов метода Check user authentication при переходе на ваш сервис. Запрос должен выполниться до отображения формы авторизации. Для аутентификации используйте параметры OAuth 2.0 клиента именно того сервиса, на котором пользователь хочет авторизоваться.

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

    Copy
    Full screen
    Small screen
    http
    • http
    • curl
    GET https://login.xsolla.com/api/oauth2/sso?client_id=<client_id>&redirect_uri=<redirect_uri>&scope=<scope>&state=<state>&response_type=code HTTP/1.1
    curl --request GET \
      --url 'https://login.xsolla.com/api/oauth2/sso?redirect_uri=redirect_uri&response_type=code&state=state&scope=scope&client_id=client_id'

    Пример ответа, когда пользователь авторизован:

    Copy
    Full screen
    Small screen
    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
      "login_url": "<redirect_uri>?code=<code>"
    }

    Чтобы получить JWT пользователя:

    1. Ваш клиент реализует и использует метод, который перенаправляет пользователя на полученный redirect_uri.
    2. Ваш сервер отправляет запрос Generate JWT с полученным code и grant_type=authorization_code для получения JWT.

    Пример ответа, когда пользователь не авторизован:

    Copy
    Full screen
    Small screen
    HTTP/1.1 401 Unauthorized
    Content-Type: application/json
    
    {
      "error": {
        "code": "003-040",
        "description": "User is unauthorized."
      }
    }

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

    В другой раз

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

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

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