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

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

Для хранения пользовательских данных вы можете использовать собственное хранилище. Данные также записываются в базу данных Иксоллы. Пароль пользователя валидируется на стороне собственного хранилища.

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

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

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

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

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

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

POST https://example.registration.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com",
  "password": "123456"
}

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

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

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

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

POST https://example.authentication.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com",
  "password": "123456"
}

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

Note: Если в базе данных Иксоллы нет записи о пользователе, создается новая.

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

Для получения информации о пользователе при аутентификации через социальные сети установите URL оповещения для аутентификации через социальную сеть. На него будет отправляться запрос с данными, полученными от социальной сети. Для подключения этой возможности передайте ваш 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 пользователя в социальной сети. Обязательный.

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

{
  "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",
}

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

POST https://example.social.authentication.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{}

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

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

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

POST https://example.reset.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "username": "john@gmail.com",
  "fields": {
    "password": "NewPa$$word1"
  }
}

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

Для партнеров, у которых уже подключен продукт Авторизация и аутентификация пользователей реализована по стандарту JWT.

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

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

  1. Подключите собственное хранилище.
  2. Настройте обработку запросов от сервера Авторизации Иксолла.

Подключение собственного хранилища

  1. Перейдите в Личный кабинет > ваш вариант авторизации > Общие настройки.
  2. В блоке Хранилище данных пользователей выберите Собственное хранилище.
  3. Введите URL для отправки запросов API:
    • URL для проверки существования пользователя
    • URL для создания пользователя
    • URL для изменения пароля
    • URL для изменения email
  4. Реализуйте API, который будет отвечать следующим образом:
    • HTTP 200/HTTP 204 для успешных запросов. Если требуется, JSON с дополнительными данными пользователя можно разместить в теле ответа. Переданные данные записываются в JWT > параметр partner_data.
    • Другие HTTP-коды для неуспешных запросов.

Info: Чтобы передавать ID пользователя из вашей базы данных в JWT, обратитесь к аккаунт-менеджеру проекта.

Валидация запросов от сервера Авторизации Иксолла

Запросы от сервера Авторизации Иксолла отправляются на ваши URL с заголовком Authorization: Bearer <JWT>. JWT подписан секретным ключом вашего проекта.

Для валидации JWT:

  1. Скопируйте значение секретного ключа (Личный кабинет > ваш вариант авторизации > Общие настройки > Секретный ключ).
  2. Выберите библиотеку и передайте на вход функции валидации значение секретного ключа.
  3. Если валидация прошла успешно, декодируйте 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 вашего варианта авторизации в Личном кабинете.

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

{
  "exp": 1573635020,
  "iat": 1573634600,
  "iss": "https://login.xsolla.com",
  "request_type": "gateway_request",
  "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000"
}