Authorization/Verify-2fa-by-sign
URI: /account/verify-2fa-by-sign/
Метод завершує вхід в систему Skarb Cloud через КЕП (кваліфікований електронний підпис). Використовуйте його після успішного /account/login/ замість /account/verify-2fa/, якщо підтвердження виконується підписом, а не OTP-кодом.
Сервер розбирає signed_string, витягує РНОКПП (ДРФО) з сертифіката КЕП і звіряє його з даними користувача, що виконує вхід.
Після успішного підтвердження API продовжує той самий token, отриманий на етапі login, і повертає оновлене значення expires_in.
Запит виконується методом POST з тілом запиту у форматі JSON.
Детальніше про загальні вимоги до запитів — у розділі Формат запитів до API.
Заголовки
Запит обов'язково повинен мати заголовок Content-Type: application/json, інакше запит буде вважатися некоректним навіть при валідному JSON у ньому.
Для підтвердження запиту користувача API необхідно передавати заголовок API-Key (той самий ключ, що й для /account/login/).
На цьому кроці не передавайте заголовок Authorization. Для підтвердження використовуйте лише pre_auth_token у тілі запиту
Параметр pre_auth_token отримується методом /account/login/ після успішної перевірки email і пароля
Тимчасовий pre_auth_token дійсний лише 5 хвилин. Якщо час вичерпано, повторіть /account/login/
Параметри запиту
| Ім'я | Тип | Обов'язковий | Опис |
|---|---|---|---|
pre_auth_token | string | Так | Тимчасовий токен попередньої авторизації, отриманий після успішного /account/login/ |
signed_string | string | Так | Підписані дані КЕП у форматі, який очікує API (рядок підпису, сформований клієнтом або SmartSign) |
Приклад запиту
{
"pre_auth_token": "xyz789...",
"signed_string": "MIIG...base64..."
}
Параметри відповіді
| Ім'я | Тип | Опис |
|---|---|---|
| data | object | Дані авторизації |
| data.token | string | Той самий токен, що отримано після /account/login/, з продовженим терміном дії |
| data.expires_in | integer | Оновлений термін дії токена в секундах |
| data.url | string | Посилання для авторизації в eHealth (якщо потрібно для вашого сценарію) |
Приклад успішної відповіді
200 OK
{
"data": {
"token": "97jJdHs9vkl9TvfkDl0n6VY6QgFRVQQt",
"expires_in": 28800,
"url": "https://..."
}
}
Приклади неуспішних відповідей
У разі помилки API повертає об'єкт errors. Текст помилки зазвичай відповідає таблиці нижче; ключ у errors може бути message, code, pre_auth_token, signed_string.
Прострочений або некоректний pre_auth_token
422 Unprocessable Entity
{
"errors": {
"message": "Токен недійсний або прострочений"
}
}
Що робити: повторіть POST /account/login/, отримайте новий pre_auth_token і надішліть verify знову протягом 5 хвилин.
Некоректний або невалідний підпис
422 Unprocessable Entity
{
"errors": {
"message": "Невірний електронний підпис"
}
}
Що робити: перевірте коректність signed_string, термін дії сертифіката КЕП і повторіть підписання.
РНОКПП (ДРФО) не збігається з користувачем
422 Unprocessable Entity
{
"errors": {
"message": "РНОКПП з КЕП не відповідає обліковому запису"
}
}
Що робити: використайте особистий КЕП того співробітника, під обліковим записом якого виконується вхід.
Некоректний API-Key
403 Forbidden
{
"errors": {
"message": "Помилка авторизації некоректний заголовок API-Key"
}
}
Що робити: перевірте наявність і значення заголовка API-Key (без заголовка Authorization на цьому кроці).