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

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


iis-device-2fa

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
iis-device-2fa [2020/08/21 04:25]
admin1
iis-device-2fa [2020/09/16 12:21] (текущий)
admin1
Строка 1: Строка 1:
-Автор: Галиев Бексултан Асылбекович +====== Схема взаимодействия ЕСИ с мобильным приложением ======
- +
-====== Схема взаимодействия ЕСИА с мобильным приложением ======+
  
  
Строка 21: Строка 19:
   {   {
     "​requestId":"​идентификатор запроса сгенерированный на стороне сервера",​     "​requestId":"​идентификатор запроса сгенерированный на стороне сервера",​
-    "​body":​ "​тело ответа",​+    "​body":​ "__тело ответа__ (смотреть ниже)",
     "​succeeded":"​флаг ошибки (в случае если ошибка не имеет никакого отношения к бизнес-логике самого API)",     "​succeeded":"​флаг ошибки (в случае если ошибка не имеет никакого отношения к бизнес-логике самого API)",
     "​errors"​ : [     "​errors"​ : [
Строка 31: Строка 29:
   }   }
  
-__//​Тело ответа//​__ ​может принимать следующие значения в зависимости от результата аутентификации:+__//​Тело ответа//​__ имеет базовый тип LoginResponse:
  
-Успешная аутентификация:​+  { 
 +    "​signInResult":​ "​одно из значений ​перечисления (Succeeded, RequiresTwoFactor,​IsLockedOut,​IsNotAllowed,​InvalidLoginAttempt)"​ 
 +  } 
 + 
 +Если ​аутентификация ​прошла успешно body будет выглядеть следующим образом:
  
   {   {
-    "​signInResult":"​Succeeded",​ +    "​signInResult":​ "​Succeeded",​ 
-    "​persistentSessionToken":​ "​токен постоянной сессии который нужно сохранить на устройстве самым безопасным образом"​+    "​persistentSessionToken"​ : "​токен постоянной сессии который нужно сохранить на устройстве самым безопасным образом"​
   }   }
 +  ​
  
-Требуется двух-факторная аутентификация:​+Если требуется двух-факторная аутентификация ​body будет выглядеть следующим образом:
  
   {   {
Строка 65: Строка 68:
   }   }
  
 +====== Двух-факторная аутентификация ======
 +//​Получение информации о включенных методов 2-х факторной аутентификации пользователя//​
  
 +Расположение:​
 +  POST /​Device/​Api/​V1/​Account/​EnabledTwoFactorMethods
 +Тело запроса:​
  
 +  {
 +    "​twoFactorSessionToken":"​временная сессия полученая в результате аутентификации"​
 +  }
  
-  ​ +Пример ответа:​ 
-==== Отправка отсканнированного значения qr-code на сервер ====+ 
 +  { 
 +    "​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":​ "​описание ошибки"​ 
 +  } 
 + 
 +Типы описаний ошибок:​ 
 +  - no session found (не валидная сессия) 
 +  - pre sign-in check failed (аккаунт либо заблокирован либо деактивирован) 
 +  - user is blocked (превышено допустимое количество неправильного ввода ПИН-кода) 
 +  - user has no pin code (пользователь не установил ПИН код в личном кабинете) 
 +  - invalid username or password (неправильный ПИН код) 
 +  - internal server error (внутренняя ошибка сервера) 
 + 
 + 
 +====== Отправка отсканнированного значения qr-code на сервер ​при двух-факторной аутентификации через WEB браузер. ======
  
  
Строка 79: Строка 225:
  
   {   {
-    "​id":"​Код ​привязки",​+    "​id":"​persistentSessionToken ​полученый ​в результате аутентификации",
     "​code":"​Значение QR-код"​     "​code":"​Значение QR-код"​
   }   }
iis-device-2fa.1597983912.txt.gz · Последние изменения: 2020/08/21 04:25 — admin1