Собственное хранилище
При использовании собственного хранилища вам доступны:
- регистрация пользователей;
- аутентификация по имени пользователя и паролю;
- аутентификация без пароля по номеру телефона;
- аутентификация через социальные сети;
- Сброс пароля пользователя.
Сценарий взаимодействия
В качестве клиента может выступать виджет авторизации Иксоллы или ваше приложение, которое использует методы Login API. Сценарий взаимодействия клиента и сервера Авторизации Иксолла:
- Клиент отправляет запросы на сервер Авторизации Иксолла. Формат запросов описан в группах методов JWT и Password.
- Сервер Авторизации Иксолла отправляет запросы на ваш сервер. Для валидации запросов используйте инструкцию.
- Сервер Авторизации Иксолла обрабатывает ответ от вашего сервера и возвращает результат клиенту.
- Клиент обрабатывает ответ.
В качестве ответа на запросы сервера вы можете отправлять информацию о пользователе в виде следующей структуры:
Параметр | Тип | Описание |
---|---|---|
attr_type | string | Тип утрибута, определяет уровень доступа пользователя к атрибутам сервиса:
|
key | string | Название атрибута, которое используется для идентификации атрибута пользователя. Должно быть уникальным для каждого пользователя. Максимальная длина: 256 символов. Вы можете использовать цифры, латинские буквы, подчеркивания и дефисы. |
permission | string or null | Тип доступа к атрибутам пользователя, влияет на список атрибутов, которые возвращают методы:
Возможные значения: public ,private (по умолчанию). |
value | string | Значение атрибута пользователя. Максимальная длина: 256 символов. |
Регистрация пользователя
- Клиент отправляет запрос
Register new user на сервер Авторизации Иксолла. - Сервер Авторизации Иксолла отправляет запрос на URL для создания пользователя. Ответ на запрос должен иметь формат, описанный в инструкции. В ответе вы можете указать список пользовательских атрибутов.
Пример запроса на URL для создания пользователя:
- 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"}'
Пример ответа:
{
"attributes": [
{
"attr_type": "server",
"key": "company",
"permission": "private",
"value": "facebook-promo"
},
{
"attr_type": "server",
"key": "custom-id",
"permission": "private",
"value": 48582
}
]
}
- Информация о пользователе записывается в базу данных Иксоллы. При этом параметр
email
отмечается как неподтвержденный. Письмо для подтверждения регистрации отправляется пользователю. - Если вы интегрировали виджет авторизации, пользователь перенаправляется на страницу с сообщением: Письмо со ссылкой для подтверждения аккаунта отправлено на {email}.
Аутентификация по имени пользователя и паролю
- Клиент отправляет запрос
Auth by username and password на сервер Авторизации Иксолла. - Сервер Авторизации Иксолла отправляет запрос на URL для проверки существования пользователя. Ответ на запрос должен иметь формат, описанный в инструкции.
Пример запроса на URL для создания пользователя:
- 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"}'
Пример ответа:
{
"attributes": [
{
"attr_type": "server",
"key": "company",
"permission": "private",
"value": "facebook-promo"
},
{
"attr_type": "server",
"key": "custom-id",
"permission": "private",
"value": 48582
}
]
}
- Сервер Авторизации Иксолла генерирует JWT пользователя.
- Пользователь перенаправляется на
login_url
с query-параметромtoken
. В параметрtoken
записывается JWT пользователя.
Аутентификация без пароля по номеру телефона
- Клиент открывает форму аутентификации и предлагает пользователю ввести номер телефона.
- Пользователь вводит свой номер телефона.
- Клиент отправляет запрос
Start auth by phone number на сервер Авторизации Иксолла. - Клиент предлагает пользователю ввести код подтверждения.
- Пользователь вводит полученный код.
- Клиент отправляет запрос
Complete auth by phone number на сервер Авторизации Иксолла. - Если это первая авторизация пользователя, сервер Авторизации Иксолла отправляет запрос на URL для входа без пароля по номеру телефона. Ответ на запрос должен иметь формат, описанный в инструкции.
Пример запроса на URL для создания пользователя:
- 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"}'
Пример ответа:
{
"attributes": [
{
"attr_type": "server",
"key": "company",
"permission": "private",
"value": "facebook-promo"
},
{
"attr_type": "server",
"key": "custom-id",
"permission": "private",
"value": 48582
}
]
}
Аутентификация через социальные сети
Для получения информации о пользователе при аутентификации через социальные сети задайте URL для входа через социальные сети в настройках вашего варианта авторизации в Личном кабинете (раздел База пользователей > Хранилище > Собственное хранилище). На него будет отправляться запрос с данными, полученными от социальной сети.
Сценарий аутентификации:
- Клиент отправляет запрос
Auth via social network на сервер Авторизации Иксолла. - Пользователь выполняет аутентификацию в социальной сети.
- Сервер Авторизации Иксолла обрабатывает данные пользователя, полученные от социальной сети, и отправляет запрос на URL для входа через социальные сети. Ответ на запрос должен иметь формат, описанный в инструкции.
Запрос содержит данные пользователя во временном токене в заголовке Authorization: Bearer <JWT>
. JWT пользователя, передаваемый в запросе, содержит следующие данные:
Поле | Тип | Описание |
---|---|---|
exp | Unix Timestamp | Дата и время истечения JWT. Срок жизни JWT — 7 минут. Обязательный. |
iat | Unix Timestamp | Дата и время выдачи JWT. Обязательный. |
iss | string | Сервис, подписавший JWT: https://login.xsolla.com . Обязательный. |
request_type | string | Константа: gateway_request . Обязательный. |
xsolla_login_project_id | string (UUID) | ID вашего варианта авторизации в Личном кабинете. Обязательный. |
string | Email-адрес пользователя. | |
sub | string (UUID) | ID пользователя, записанный на стороне сервера Авторизации Иксолла. Обязательный. |
username | string | Имя пользователя. |
provider | string | Имя социальной сети, через которую пользователь авторизовался. Обязательный. |
id | string | ID пользователя в социальной сети. Обязательный. |
Пример полезных данных токена:
- json
{
"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 для создания пользователя:
- 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'
Пример ответа:
{
"attributes": [
{
"attr_type": "server",
"key": "company",
"permission": "private",
"value": "facebook-promo"
},
{
"attr_type": "server",
"key": "custom-id",
"permission": "private",
"value": 48582
}
]
}
Сброс пароля пользователя
- Клиент отправляет запрос
Reset password на сервер Авторизации Иксолла. - Сервер Авторизации Иксолла отправляет письмо пользователю для подтверждения сброса пароля.
- Пользователь подтверждает сброс пароля в письме и переходит на страницу ввода нового пароля.
- Пользователь вводит новый пароль.
- Сервер Авторизации Иксолла отправляет запрос на URL для сброса пароля. Ответ на запрос должен иметь формат, описанный в инструкции.
Пример запроса на URL для создания пользователя:
- 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"}}'
Была ли статья полезна?
Оценить страницу
В другой раз
Спасибо за обратную связь!
Продолжить чтение
Полезные ссылки
Как подключить собственное хранилищеНашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.