Авторизация / Собственное хранилище
 На главную

Авторизация

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

  • Варианты аутентификации

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

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

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

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

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

  • Инструкции

  • Расширения

  • Юридические настройки

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

  • Собственное хранилище

    При использовании собственного хранилища вам доступны:

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

    В качестве клиента может выступать виджет авторизации Иксоллы или ваше приложение, которое использует методы Login API. Сценарий взаимодействия клиента и сервера Авторизации Иксолла:

    1. Клиент отправляет запросы на сервер Авторизации Иксолла. Формат запросов описан в группах методов JWT и Password.
    2. Сервер Авторизации Иксолла отправляет запросы на ваш сервер. Для валидации запросов используйте инструкцию.
    3. Сервер Авторизации Иксолла обрабатывает ответ от вашего сервера и возвращает результат клиенту.
    4. Клиент обрабатывает ответ.

    В качестве ответа на запросы сервера вы можете отправлять информацию о пользователе в виде следующей структуры:

    ПараметрТипОписание
    attr_type
    stringТип утрибута, определяет уровень доступа пользователя к атрибутам сервиса:
    • client — значения для таких атрибутов вводятся пользователем или задаются согласно внутриигровой логике в клиентской части вашего приложения. Значения атрибутов этого типа вводятся пользователем или задаются в соответствии с внутриигровой логикой на стороне клиента. Например: имя и характеристики персонажа, уровень сложности игры и т. д. Используется по умолчанию.
    • server — значения для таких атрибутов задаются и редактируются только на серверной части вашего приложения. Рекомендуется использовать их для настройки характеристик игрового персонажа или пользовательских параметров, которые не должны регулярно меняться. Например: получение бонуса, ключевые параметры игрового персонажа, категории пользователей и т. д.
    key
    stringНазвание атрибута, которое используется для идентификации атрибута пользователя. Должно быть уникальным для каждого пользователя.
    Максимальная длина: 256 символов. Вы можете использовать цифры, латинские буквы, подчеркивания и дефисы.
    permission
    string or nullТип доступа к атрибутам пользователя, влияет на список атрибутов, которые возвращают методы:
    Возможные значения: public,private(по умолчанию).
    value
    stringЗначение атрибута пользователя.
    Максимальная длина: 256 символов.

    Регистрация пользователя

    1. Клиент отправляет запрос Register new user на сервер Авторизации Иксолла.
    2. Сервер Авторизации Иксолла отправляет запрос на URL для создания пользователя. Ответ на запрос должен иметь формат, описанный в инструкции. В ответе вы можете указать список пользовательских атрибутов.

    Пример запроса на URL для создания пользователя:

    Copy
    Full screen
    Small screen
    http
    • http
    • curl

    POST https://your.hostname/your_registration_uri HTTP/1.1
    Authorization: Bearer {JWT}
    Content-Type: application/json
    
    {
      "email": "john@gmail.com",
      "password": "123456"
    }
    curl --request POST \
      --url 'https://your.hostname/your_registration_uri' \
      --header 'authorization: bearer_JWT' \
      --header 'content-type: application/json' \
      --data '{"email":"john@gmail.com","password":"123456"}'

    Пример ответа:

    Copy
    Full screen
    Small screen

      {
          "attributes": [
            {
              "attr_type": "server",
              "key": "company",
              "permission": "private",
              "value": "facebook-promo"
            },
            {
              "attr_type": "server",
              "key": "custom-id",
              "permission": "private",
              "value": 48582
            }
          ]
      }

      1. Информация о пользователе записывается в базу данных Иксоллы. При этом параметр email отмечается как неподтвержденный. Письмо для подтверждения регистрации отправляется пользователю.
      2. Если вы интегрировали виджет авторизации, пользователь перенаправляется на страницу с сообщением: Письмо со ссылкой для подтверждения аккаунта отправлено на {email}.

      Аутентификация по имени пользователя и паролю

      1. Клиент отправляет запрос Auth by username and password на сервер Авторизации Иксолла.
      2. Сервер Авторизации Иксолла отправляет запрос на URL для проверки существования пользователя. Ответ на запрос должен иметь формат, описанный в инструкции.

      Пример запроса на URL для создания пользователя:

      Copy
      Full screen
      Small screen
      http
      • http
      • curl

      POST https://your.hostname/your_authentication_uri HTTP/1.1
      Authorization: Bearer {JWT}
      Content-Type: application/json
      
      {
        "email": "john@gmail.com",
        "password": "123456"
      }
      curl --request POST \
        --url 'https://your.hostname/your_authentication_uri' \
        --header 'authorization: bearer_JWT' \
        --header 'content-type: application/json' \
        --data '{"email":"john@gmail.com","password":"123456"}'

      Пример ответа:

      Copy
      Full screen
      Small screen

        {
            "attributes": [
              {
                "attr_type": "server",
                "key": "company",
                "permission": "private",
                "value": "facebook-promo"
              },
              {
                "attr_type": "server",
                "key": "custom-id",
                "permission": "private",
                "value": 48582
              }
            ]
        }

        1. Сервер Авторизации Иксолла генерирует JWT пользователя.
        2. Пользователь перенаправляется на login_url с query-параметром token. В параметр token записывается JWT пользователя.

        Примечание
        Если в базе данных Иксоллы нет записи о пользователе, создается новая.

        Аутентификация без пароля по номеру телефона

        1. Клиент открывает форму аутентификации и предлагает пользователю ввести номер телефона.
        2. Пользователь вводит свой номер телефона.
        3. Клиент отправляет запрос Start auth by phone number на сервер Авторизации Иксолла.
        4. Клиент предлагает пользователю ввести код подтверждения.
        5. Пользователь вводит полученный код.
        6. Клиент отправляет запрос Complete auth by phone number на сервер Авторизации Иксолла.
        7. Если это первая авторизация пользователя, сервер Авторизации Иксолла отправляет запрос на URL для входа без пароля по номеру телефона. Ответ на запрос должен иметь формат, описанный в инструкции.

        Пример запроса на URL для создания пользователя:

        Copy
        Full screen
        Small screen
        http
        • http
        • curl

        POST https://your.hostname/your_phone_authentication_uri HTTP/1.1
        Authorization: Bearer {JWT}
        Content-Type: application/json
        
        {
          "login": "+12025550140",
          "type": "phone"
        }
        curl --request POST \
          --url 'https://your.hostname/your_phone_authentication_uri' \
          --header 'authorization: bearer_JWT' \
          --header 'content-type: application/json' \
          --data '{"login":"+12025550140","type":"phone"}'

        Пример ответа:

        Copy
        Full screen
        Small screen

          {
              "attributes": [
                {
                  "attr_type": "server",
                  "key": "company",
                  "permission": "private",
                  "value": "facebook-promo"
                },
                {
                  "attr_type": "server",
                  "key": "custom-id",
                  "permission": "private",
                  "value": 48582
                }
              ]
          }

          Аутентификация через социальные сети

          Для получения информации о пользователе при аутентификации через социальные сети задайте URL для входа через социальные сети в настройках вашего варианта авторизации в Личном кабинете (раздел База пользователей > Хранилище > Собственное хранилище). На него будет отправляться запрос с данными, полученными от социальной сети.

          Сценарий аутентификации:

          1. Клиент отправляет запрос Auth via social network на сервер Авторизации Иксолла.
          2. Пользователь выполняет аутентификацию в социальной сети.
          3. Сервер Авторизации Иксолла обрабатывает данные пользователя, полученные от социальной сети, и отправляет запрос на URL для входа через социальные сети. Ответ на запрос должен иметь формат, описанный в инструкции.

          Запрос содержит данные пользователя во временном токене в заголовке Authorization: Bearer <JWT>. JWT пользователя, передаваемый в запросе, содержит следующие данные:

          ПолеТипОписание
          expUnix TimestampДата и время истечения JWT. Срок жизни JWT — 7 минут. Обязательный.
          iatUnix TimestampДата и время выдачи JWT. Обязательный.
          issstringСервис, подписавший JWT: https://login.xsolla.com. Обязательный.
          request_typestringКонстанта: gateway_request. Обязательный.
          xsolla_login_project_idstring (UUID)ID вашего варианта авторизации в Личном кабинете. Обязательный.
          emailstringEmail-адрес пользователя.
          substring (UUID)ID пользователя, записанный на стороне сервера Авторизации Иксолла. Обязательный.
          usernamestringИмя пользователя.
          providerstringИмя социальной сети, через которую пользователь авторизовался. Обязательный.
          idstringID пользователя в социальной сети. Обязательный.

          Пример полезных данных токена:

          Copy
          Full screen
          Small screen

          {
            "exp": 1573635020,
            "iat": 1573634600,
            "iss": "https://login.xsolla.com",
            "request_type": "gateway_request",
            "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000",
            "sub": "00000000-0000-0000-0000-000000000000",
            "email": "example@test.com",
            "username": "Smith707",
            "provider": "google",
            "id": "123",
          }

          Пример запроса на URL для создания пользователя:

          Copy
          Full screen
          Small screen
          http
          • http
          • curl

          POST https://your.hostname/your_social_authentication_uri HTTP/1.1
          Authorization: Bearer {JWT}
          Content-Type: application/json
          
          {}
          curl --request POST \
            --url 'https://your.hostname/your_social_authentication_uri' \
            --header 'authorization: bearer_JWT' \
            --header 'content-type: application/json'

          Пример ответа:

          Copy
          Full screen
          Small screen

            {
                "attributes": [
                  {
                    "attr_type": "server",
                    "key": "company",
                    "permission": "private",
                    "value": "facebook-promo"
                  },
                  {
                    "attr_type": "server",
                    "key": "custom-id",
                    "permission": "private",
                    "value": 48582
                  }
                ]
            }

            Сброс пароля пользователя

            1. Клиент отправляет запрос Reset password на сервер Авторизации Иксолла.
            2. Сервер Авторизации Иксолла отправляет письмо пользователю для подтверждения сброса пароля.
            3. Пользователь подтверждает сброс пароля в письме и переходит на страницу ввода нового пароля.
            4. Пользователь вводит новый пароль.
            5. Сервер Авторизации Иксолла отправляет запрос на URL для сброса пароля. Ответ на запрос должен иметь формат, описанный в инструкции.

            Пример запроса на URL для создания пользователя:

            Copy
            Full screen
            Small screen
            http
            • http
            • curl

            POST https://your.hostname/your_reset_uri HTTP/1.1
            Authorization: Bearer {JWT}
            Content-Type: application/json
            
            {
              "username": "john@gmail.com",
              "fields": {
                "password": "NewPa$$word1"
              }
            }
            curl --request POST \
              --url 'https://your.hostname/your_reset_uri' \
              --header 'authorization: bearer_JWT' \
              --header 'content-type: application/json' \
              --data '{"email":"john@gmail.com","fields":{"password":"NewPa$$word1"}}'

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

            В другой раз

            Спасибо за обратную связь!

            Продолжить чтение

            Последнее обновление: 15 февраля 2023

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

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