Метод используется для входа в Панель управления Клиента с использованием учетных данных пользователя (см. ) и встроенного метода аутентификации (см. users_sign_on_method в Получение настроек реселлера и ). Альтернативный способ входа см. в Вход через стороннюю IDM (OAuth).
Для успешного входа должны выполняться все следующие условия:
-
Email пользователя подтвержден.
-
Количество неуспешных попыток входа и интервал между попытками соответствуют настройкам безопасности реселлера (см. ).
-
Если для пользователей аккаунта включено обязательное использование MFA (см. Получение информации об аккаунте) и у пользователя еще нет настроенных методов MFA (см. Получение информации о текущем пользователе) — метод MFA настроен в процессе входа.
-
Если у пользователя уже есть настроенный метод MFA (см. Получение информации о текущем пользователе) — успешно пройден второй шаг аутентификации с использованием настроенного метода MFA.
От настроек MFA зависит ответ метода и может требоваться второй шаг аутентификации с повторным вызовом метода. Конечным результатом использования метода является предоставление пользователю набора токенов для дальнейшей работы.
Этот же метод используется для принятия приглашения и входа в Панель управления Клиента определенного аккаунта, если приглашение было отправлено существующему пользователю (см. action = sign_in в Приглашение пользователя).
POST {reseller_domain}/internal_api/sign_in
В этой статье:
Авторизация
Авторизация не требуется.
Аргументы
|
Название |
Тип параметра |
Тип данных |
Обязательный/
|
Описание |
||
|---|---|---|---|---|---|---|
|
Content-Type |
header |
string |
Обязательный |
Тип данных, передаваемых в запросе. Укажите application/vnd.api+json |
||
|
Accept |
header |
string |
Обязательный |
Поддерживаемые типы данных в ответе. Укажите application/vnd.api+json |
||
|
X-Api-Locale |
header |
string |
Опциональный |
Двухбуквенный код языка данных в ответе |
||
|
reseller_domain |
path |
string |
Обязательный |
Доменное имя реселлера |
||
|
|
form |
string |
Обязательный |
Email пользователя, который используется как логин для входа в Панель управления Клиента |
||
|
password |
form |
string |
Обязательный |
Пароль пользователя для входа в Панель управления Клиента |
||
|
remember_me |
form |
bool |
Обязательный |
Признак Запомнить меня (см. ):
См. также Обновление токенов |
||
|
invitation_token |
form |
string |
Опциональный |
Токен из приглашения. Значения |
||
|
captcha_token |
form |
string |
Опциональный |
Токен пользователя, полученный от reCAPTCHA после нажатия кнопки входа. Обязательный, если в настройках кастомизации задано |
||
|
mfa |
form |
object |
Опциональный |
Параметры MFA. Указываются только на втором шаге аутентификации, который присутствует при выполнении хотя бы одного из следующих условий:
|
||
|
|
key |
form |
string |
Опциональный |
Ключ метода MFA, выбранного для входа:
|
|
|
|
remember_mfa |
form |
bool |
Опциональный |
||
|
|
params |
form |
object |
Опциональный |
Параметры метода MFA, выбранного для входа |
|
|
|
|
code |
form |
string |
Опциональный |
Код, сгенерированный выбранным методом MFA (например, временный код, отображаемый в приложении для аутентификации, или один из резервных кодов) |
|
|
|
manual_secret |
form |
string |
Опциональный |
Код для ручной настройки выбранного метода MFA, полученный на первом шаге аутентификации. Указывается, если в процессе входа пользователь настраивает выбранный метод MFA |
Модель ответа
Требуется второй шаг аутентификации
|
Название |
Тип данных |
Описание |
||||||
|---|---|---|---|---|---|---|---|---|
|
status |
string |
Имеет значение mfa_required — требуется второй шаг аутентификации |
||||||
|
mfa_methods |
object |
Список поддерживаемых методов MFA |
||||||
|
|
key |
string |
Ключ метода MFA:
|
|||||
|
|
exist |
bool |
Признак настроенного метода MFA у пользователя (см. Получение информации о текущем пользователе):
|
|||||
|
|
params |
object |
Параметры для настройки метода MFA. Возвращаются, если метод MFA не настроен у пользователя |
|||||
|
|
|
manual_secret |
string |
Код для ручной настройки метода MFA. Это значение необходимо указать в теле запроса при повторном вызове метода |
||||
|
|
|
url |
string |
Ссылка для QR-кода |
||||
Успешный вход
|
Название |
Тип данных |
Описание |
||||||
|---|---|---|---|---|---|---|---|---|
|
jwt_refresh |
cookie |
Refresh token пользователя |
||||||
|
remember_mfa |
cookie |
Куки для запоминания устройства, если при входе с MFA было указано |
||||||
|
status |
string |
Имеет значение login_success — успешный вход |
||||||
|
access |
string |
Access token пользователя |
||||||
|
csrf |
string |
CSRF token пользователя |
||||||
|
refresh_expires_at |
string |
Дата истечения refresh token пользователя |
||||||
|
account_id |
integer |
ID аккаунта, к которому присоединился пользователь. Присутствует в ответе, если в запросе указан |
||||||
|
mfa |
object |
Параметры MFA. Присутствует в ответе, если пользователь настроил метод MFA на втором шаге |
||||||
|
|
backup_codes |
array of strings |
10 одноразовых резервных кодов |
|||||
Пример входа без MFA
Запрос
curl --location --request POST 'https://test.activeplatform.com/internal_api/sign_in' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Accept: application/vnd.api+json' \
--header 'X-Api-Locale: en' \
--data-raw '{
"data": {
"attributes": {
"email": "user@example.com",
"password": "12345678",
"remember_me": true
}
}
}'
Ответ
Cookie: jwt_refresh=refreshTokenExample
{
"access": "accessTokenExample",
"csrf": "csrfTokenExample==",
"refresh_expires_at": "2023-01-01T12:34:56.000+00:00",
"status": "login_success"
}
Пример входа с MFA, пользователь настраивает метод MFA на втором шаге
Запрос №1
curl --location --request POST 'https://test.activeplatform.com/internal_api/sign_in' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Accept: application/vnd.api+json' \
--header 'X-Api-Locale: en' \
--data-raw '{
"data": {
"attributes": {
"email": "user@example.com",
"password": "12345678",
"remember_me": true
}
}
}'
Ответ №1
{
"status": "mfa_required",
"mfa_methods": [
{
"key": "authenticator",
"exist": false,
"params": {
"manual_secret": "ABC123",
"url": "otpauth://totp/XXX"
}
}
]
}
Запрос №2
curl --location --request POST 'https://test.activeplatform.com/internal_api/sign_in' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Accept: application/vnd.api+json' \
--header 'X-Api-Locale: en' \
--data-raw '{
"data": {
"attributes": {
"email": "user@example.com",
"password": "12345678",
"remember_me": true,
"mfa": {
"key": "authenticator",
"remember_mfa": true,
"params": {
"code": "123456",
"manual_secret": "ABC123"
}
}
}
}
}'
Ответ №2
Cookie:
jwt_refresh=refreshTokenExample
remember_mfa=refreshTokenExample
{
"access": "accessTokenExample",
"csrf": "csrfTokenExample==",
"refresh_expires_at": "2023-01-01T12:34:56.000+00:00",
"status": "login_success",
"mfa": {
"backup_codes": [
"b4c3da4f",
"48a330cf",
"7e3558ee",
"676bd770",
"661bcdfb",
"7ada89f9",
"800734a1",
"73864b07",
"88a55dd0",
"76923f9e"
]
}
}
Пример входа с MFA, у пользователя есть настроенный метод MFA
Запрос №1
curl --location --request POST 'https://test.activeplatform.com/internal_api/sign_in' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Accept: application/vnd.api+json' \
--header 'X-Api-Locale: en' \
--data-raw '{
"data": {
"attributes": {
"email": "user@example.com",
"password": "12345678",
"remember_me": true
}
}
}'
Ответ №1
{
"status": "mfa_required",
"mfa_methods": [
{
"key": "authenticator",
"exist": true,
"params": {}
}
]
}
Запрос №2
curl --location --request POST 'https://test.activeplatform.com/internal_api/sign_in' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Accept: application/vnd.api+json' \
--header 'X-Api-Locale: en' \
--data-raw '{
"data": {
"attributes": {
"email": "user@example.com",
"password": "12345678",
"remember_me": true,
"mfa": {
"key": "authenticator",
"remember_mfa": true,
"params": {
"code": "123456",
"manual_secret": null
}
}
}
}
}'
Ответ №2
Cookie:
jwt_refresh=refreshTokenExample
remember_mfa=refreshTokenExample
{
"access": "accessTokenExample",
"csrf": "csrfTokenExample==",
"refresh_expires_at": "2023-01-01T12:34:56.000+00:00",
"status": "login_success"
}