Инструменты пользователя

Инструменты сайта


iis-device-2fa

Схема взаимодействия ЕСИ с мобильным приложением

Аутентификация

Расположение:

POST /Device/Api/V1/Account/Login

Тело запроса:

{
  "username": "логин пользователя (ИНН)",
  "password": "пароль",
  "deviceId": "уникальный идентификатор устройства с помощью которого осуществляется вход",
  "deviceName": "наименование устройства для отображения в его личном кабинете"
}

Ответ:

{
  "requestId":"идентификатор запроса сгенерированный на стороне сервера",
  "body": "__тело ответа__ (смотреть ниже)",
  "succeeded":"флаг ошибки (в случае если ошибка не имеет никакого отношения к бизнес-логике самого API)",
  "errors" : [
    {
      "Code": "код ошибки (не число)",
      "Message": "описание ошибки"
    }
  ]
}

Тело ответа имеет базовый тип LoginResponse:

{
  "signInResult": "одно из значений перечисления (Succeeded, RequiresTwoFactor,IsLockedOut,IsNotAllowed,InvalidLoginAttempt)"
}

Если аутентификация прошла успешно body будет выглядеть следующим образом:

{
  "signInResult": "Succeeded",
  "persistentSessionToken" : "токен постоянной сессии который нужно сохранить на устройстве самым безопасным образом"
}

Если требуется двух-факторная аутентификация body будет выглядеть следующим образом:

{
  "signInResult":"RequiresTwoFactor",
  "twoFactorSessionToken" : "токен для временной сессии на период двух-факторной аутентификации (токен валиден в течение 30 минут)"
}

Неправильный логин или пароль:

{
  "signinResult":"InvalidLoginAttempt"
}

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

{
  "signInResult":"IsLockedOut"
}

Аккаунт деактивирован:

{
  "signInResult":"IsNotAllowed"
}

Двух-факторная аутентификация

Получение информации о включенных методов 2-х факторной аутентификации пользователя

Расположение:

POST /Device/Api/V1/Account/EnabledTwoFactorMethods

Тело запроса:

{
  "twoFactorSessionToken":"временная сессия полученая в результате аутентификации"
}

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

{
  "requestId":"идентификатор запроса сгенерированный на стороне сервера",
  "body": [
    {
      "Method":"метод 2-х факторной аутентификации принимающе одно из значений: Sms,Telegram",
      "Enabled":"флаг означающий включен этот метод или нет"
    }
  ],
  "succeeded":"флаг ошибки (в случае если ошибка не имеет никакого отношения к бизнес-логике самого API, это может быть ошибка валидации или ошибка InternalServerError и так. далее)",
  "errors" : [
    {
      "Code": "код ошибки (не число)",
      "Message": "описание ошибки"
    }
  ]
}

Инциация запроса на отправку верификационного кода по методу Sms

Расположение: POST /Device/Api/V1/Sms/SendVerificationCode Тело запроса:

{
  "twoFactorSessionToken":"временная сессия полученая в результате аутентификации"
}

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

{
  "requestId":"идентификатор запроса сгенерированный на стороне сервера",
  "succeeded":"флаг ошибки",
  "errors" : [
    {
      "Code": "код ошибки (не число)",
      "Message": "описание ошибки"
    }
  ]
}

Верификация через SMS

Расположение:

POST /Device/Api/V1/Sms/Login

Тело запроса:

{
  "twoFactorSessionToken":"временная сессия полученая в результате аутентификации",
  "verificationCode":"код пришедший на устройство через смс"
}

Ответ идентичен API /Device/Api/V1/Account/Login (имеет тип LoginResponse)

Инциация запроса на отправку верификационного кода по методу Telegram

Расположение:

POST /Device/Api/V1/Telegram/SendVerificationCode

Тело запроса:

{
  "twoFactorSessionToken":"временная сессия полученая в результате аутентификации"
}

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

{
  "requestId":"идентификатор запроса сгенерированный на стороне сервера",
  "succeeded":"флаг ошибки",
  "errors" : [
    {
      "Code": "код ошибки (не число)",
      "Message": "описание ошибки"
    }
  ]
}

Верификация через Telegram

Расположение:

POST /Device/Api/V1/Telegram/Login

Тело запроса:

{
  "twoFactorSessionToken":"временная сессия полученая в результате аутентификации",
  "verificationCode":"код пришедший на устройство через telegram"
}

Ответ идентичен API /Device/Api/V1/Account/Login (имеет тип LoginResponse)

Получение access_token от ЕСИ через метод Resource Owner Password Validation Flow

Расположение:

POST /connect/token

Тело запроса x-www-form-urlencoded:

grant_type=password
client_id=[YOUR_CLIENT_ID]
client_secret=[YOUR_CLIENT_SECRET]
username=persistentSessionToken
password=[ПИН код который пользователь установил в своем личном кабинете]

При правильном вводе ПИН-кода в связке с валидным значением persistentSessionToken будет сгенерирован access_token. Пример:

{
  "access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjUzOTIxODNGNzUzRDc5ODJCMjQ0MDVCOTA1OUJCOUNCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE1OTc5ODg3NjIsImV4cCI6MTU5Nzk5MjM2MiwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NzAwMSIsImNsaWVudF9pZCI6ImVnb3ZfbW9iaWxlX2FwcCIsInN1YiI6IjEwMDAwMDciLCJhdXRoX3RpbWUiOjE1OTc5ODg3NjIsImlkcCI6ImxvY2FsIiwianRpIjoiMTlGODY0RDA4Q0EyOEQ2RTAyNjAwODA3Nzc1MzZBN0MiLCJpYXQiOjE1OTc5ODg3NjIsInNjb3BlIjpbImRldmljZV9hcGkiLCJlbWFpbCIsIklkZW50aXR5U2VydmVyQXBpIiwibm90aWZpY2F0aW9uX2FwaSIsIm9wZW5pZCIsIm9yZ2FuaXphdGlvbnMiLCJwaG9uZSIsInByb2ZpbGUiLCJvZmZsaW5lX2FjY2VzcyJdLCJhbXIiOlsicHdkIl19.XuIcwzKbleuaqxBwc_pLgM-arYyFNg1gXKeRz8ftJqfPP0IcskkcpWHoQv5CEMF1lkHSaL7AquTZ0T4tduQsdByY7enH-OFy_VnuAz5YUL2GU3L0eJNNcpdzGsxtHENtejWd1JdPcJFjmEF9v8dmVnldAbDHD4LVy6tu-43nCbuMF3nHkePBhvvuwC1ZSOrLMdhV06gBqc-6t6Zb67AHZMyM7R7A33m5lq42rirfaSu2RdgLo9StRrs3vEOUrni4MsphdwQLVR_9TO2x8Gnudhuf5FMbWSiFbX7MTvao1mB-4GZzZZn3odpfWIw7zZJCxsQ8dohom_fJG6viktOBGg",
  "expires_in": 3600,
  "token_type": "Bearer",
  "refresh_token": "E1A5A63CD63A40E3FFA3985E16CC0C553239A05549EA9DA7775B61E6CA98625B",
  "scope": "device_api email IdentityServerApi notification_api offline_access openid organizations phone profile"
}

В случае ввода неправильных данных ЕСИ сгенерирует ошибку имеющую структуру:

{
  "error":"invalid_request",
  "error_description": "описание ошибки"
}

Типы описаний ошибок:

  1. no session found (не валидная сессия)
  2. pre sign-in check failed (аккаунт либо заблокирован либо деактивирован)
  3. user is blocked (превышено допустимое количество неправильного ввода ПИН-кода)
  4. user has no pin code (пользователь не установил ПИН код в личном кабинете)
  5. invalid username or password (неправильный ПИН код)
  6. internal server error (внутренняя ошибка сервера)

Отправка отсканнированного значения qr-code на сервер при двух-факторной аутентификации через WEB браузер.

Расположение:

POST /Identity/Api/Device/OnQrCodeScanned

Авторизация: НЕ ТРЕБУЕТСЯ

{
  "id":"persistentSessionToken полученый в результате аутентификации",
  "code":"Значение QR-код"
}

Ответ при успешной операции (статус 200)

{
  "requestId":"идентификатор запроса",
  "succeeded":"true"
}
iis-device-2fa.txt · Последние изменения: 2020/09/16 12:21 — admin1