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

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


iis-info

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
iis-info [2020/07/06 09:58]
admin1 [PKCE]
iis-info [2023/11/13 08:46] (текущий)
admin1
Строка 1: Строка 1:
 //​Автор:​ Владимир Недорослев//​ //​Автор:​ Владимир Недорослев//​
  
-====== Протокол работы ЕСИА ======+====== Протокол работы ЕСИ ======
  
 //Все запросы в данном руководстве разделены построчно для удобства чтения.//​ //Все запросы в данном руководстве разделены построчно для удобства чтения.//​
  
-Данный документ описывает конфигурацию работы ЕСИА.+Данный документ описывает конфигурацию работы ЕСИ.
  
 ====== Discovery document ====== ====== Discovery document ======
  
-Discovery document – это документ в формате JSON, показывающий информацию об ЕСИА -  адреса Endpoint’ов,​ поддерживаемые scope, какую информацию о пользователе можно выдать и пр.+Discovery document – это документ в формате JSON, показывающий информацию об ЕСИ -  адреса Endpoint’ов,​ поддерживаемые scope, какую информацию о пользователе можно выдать и пр.
  
 Его можно найти по адресу: ​ Его можно найти по адресу: ​
-  https://​{Базовый адрес ЕСИА}/​.well-known/​openid-configuration  ​+  https://​{Базовый адрес ЕСИ}/​.well-known/​openid-configuration  ​
  
 Содержит следующие поля: Содержит следующие поля:
-  * **issuer** – URL идентификатор ЕСИА. ЕСИА использует его для сравнения с полем **iss** в **ID Token**’е. +  * **issuer** – URL идентификатор ЕСИ. ЕСИ использует его для сравнения с полем **iss** в **ID Token**’е. 
-  * **jwks_uri** – URL JWK документа. Содержит ключи, которые клиенты должны использовать при проверке подписей ЕСИА+  * **jwks_uri** – URL JWK документа. Содержит ключи, которые клиенты должны использовать при проверке подписей ЕСИ. ​
   * **authorization_endpoint** – URL адрес Authorization Endpoint’а.   * **authorization_endpoint** – URL адрес Authorization Endpoint’а.
   * **token_endpoint** – URL адрес Token Endpoint’а.   * **token_endpoint** – URL адрес Token Endpoint’а.
Строка 23: Строка 23:
   * **revocation_endpoint** - endpoint отзыва **Access Token**'​а.   * **revocation_endpoint** - endpoint отзыва **Access Token**'​а.
  
-  * **scopes_supported** – JSON массив,​ содержащий список всех значений scope, поддерживаемых ЕСИА:+  * **scopes_supported** – JSON массив,​ содержащий список всех значений scope, поддерживаемых ЕСИ:
     * **openid** – обязательный scope для всех запросов. Означает,​ что используется технология OpenID Connect.     * **openid** – обязательный scope для всех запросов. Означает,​ что используется технология OpenID Connect.
     * **profile** – включает в себя:     * **profile** – включает в себя:
Строка 37: Строка 37:
     * **phone** – включает в себя **phone** и **phone_verified**.     * **phone** – включает в себя **phone** и **phone_verified**.
     * **offline_access** – нужно ли получение Refresh Token'​а.     * **offline_access** – нужно ли получение Refresh Token'​а.
-    * **organizations** - ИНН организаций ​(юридических лиц), в которых состоит пользователь.+    * **device_api** - доступ к API для мобильного приложения. 
 +    * **IdentityServerAPI** - обязательный параметр для доступа к ЕСИ посредствам API (Обязателен для мобильных приложений,​ и сервисов которые используют API "​ЕСИ"​). 
 +    * **PEP_disable** - позволяет отключить вход через обычную электронную подпись клиенту. 
 +    * **signature_api** - доступ к подписанию. 
 +    * **TouchIdApi** - доступ к API для верификации человека по отпечатку пальца. 
 +    * **FaceIdApi** - доступ к API для верификации человека по лицу. 
 +    * **PersonalCabinetApi** - доступ к API личного кабинета мобильному приложению. 
 +    * **oepRegister** - доступ к API для удаленного получения ОЭП. 
 +    * **pki_srs_kg_create_user** - API необходимое для создание и синхронизированния пользователей
 +    * **organization_tin** – ИНН ​юридического лица, от имени которого заходит пользователь. 
 +      * **position_name** – должность пользователя в юридическом ​лицеуказанного ​в organization_tin. 
 +    * **QRdisable** - значение отключает возможность авторизации в системе через QR-код (при включенной функции не отображается вкладка «QR» в ЕСИ) 
 +    * **CdsOtpApi** - доступ к api для получения otp с ОЭП 
 +    * **IisUserInfo** - доступ к информации о пользователе еси api
  
-  * **response_types_supported** – JSON массив,​ содержащий список значений **response_type**,​ поддерживаемых ЕСИА.+  * **response_types_supported** – JSON массив,​ содержащий список значений **response_type**,​ поддерживаемых ЕСИ.
   * **response_modes_supported** – JSON массив,​ содержащий список поддерживаемх **response_mode**,​ основанный на OAuth 2.0.   * **response_modes_supported** – JSON массив,​ содержащий список поддерживаемх **response_mode**,​ основанный на OAuth 2.0.
  
-  * **claims_supported** – JSON массив,​ содержащий список данных,​ которые может выдавать ЕСИА+  * **claims_supported** – JSON массив,​ содержащий список данных,​ которые может выдавать ЕСИ: 
-    * **sub** – идентификатор пользователя ЕСИА.+    * **sub** – идентификатор пользователя ЕСИ.
     * **pin** – персональный номер.     * **pin** – персональный номер.
     * **family_name** – Фамилия.     * **family_name** – Фамилия.
Строка 56: Строка 69:
     * **phone_number** – мобильный телефон в формате **E164**.     * **phone_number** – мобильный телефон в формате **E164**.
     * **phone_number_verified** – подтвержден ли телефон (true/​false). ​       * **phone_number_verified** – подтвержден ли телефон (true/​false). ​  
-    * **organizations** - массив,​ содержащий ​ИНН ​организаций (юридических лиц)в которых состоит пользователь.+    * **organization_tin** – ИНН юридического ​лицаот имени ​которого заходит пользователь
 +    * **position_name** – должность пользователя в юридическом лице, указанного в organization_tin.
  
  
Строка 62: Строка 76:
 ====== ID Token ====== ====== ID Token ======
  
-Для аутентификации пользователя OpenID Connect вводит понятие **ID Token**’а. Это структура данных,​ которая хранит информацию об аутентификации пользователя ЕСИА. Представляется в виде JSON Web Token (JWT). +Для аутентификации пользователя OpenID Connect вводит понятие **ID Token**’а. Это структура данных,​ которая хранит информацию об аутентификации пользователя ЕСИ. Представляется в виде JSON Web Token (JWT). 
-ЕСИА выдаёт **ID Token** со следующими полями:​ +ЕСИ выдаёт **ID Token** со следующими полями:​ 
-  * **iss** – (Issuer) идентификатор ЕСИА. Это регистрозависимый URL, использующий https, содержащий схему и хост. Может содержать номер порта, путь. Не содержит параметров запроса. +  * **iss** – (Issuer) идентификатор ЕСИ. Это регистрозависимый URL, использующий https, содержащий схему и хост. Может содержать номер порта, путь. Не содержит параметров запроса. 
-  * **sub** – (Subject) идентификатор пользователя. Уникальный,​ никогда неменяющийся идентификатор пользователя,​ который хранит ЕСИА. Например,​ ''​24400320''​. Является регистрозавсимой строкой,​ длиной не более 255 ASCII символов.+  * **sub** – (Subject) идентификатор пользователя. Уникальный,​ никогда неменяющийся идентификатор пользователя,​ который хранит ЕСИ. Например,​ ''​24400320''​. Является регистрозавсимой строкой,​ длиной не более 255 ASCII символов.
   * **aud** – (Audience) массив строк, содержащий идентификаторы клиентов (client_id),​ которым предназначен данный ID Token. ​   * **aud** – (Audience) массив строк, содержащий идентификаторы клиентов (client_id),​ которым предназначен данный ID Token. ​
   * **exp** – (Expiration) срок действия **ID Token**'​a. Время, после которого **ID Token** не является валидным и не должен обрабатываться. При валидации **ID Token**'​а текущее время должно быть до времени,​ указанного в этом поле. Значение представляется в виде JSON числа, показывающий количество секунд прошедших с 1970-01-01T0:​0:​0Z согласно UTC стандарту (см. [[https://​tools.ietf.org/​html/​rfc3339|RFC3339]] для подробной информации насчёт времени в UTC).   * **exp** – (Expiration) срок действия **ID Token**'​a. Время, после которого **ID Token** не является валидным и не должен обрабатываться. При валидации **ID Token**'​а текущее время должно быть до времени,​ указанного в этом поле. Значение представляется в виде JSON числа, показывающий количество секунд прошедших с 1970-01-01T0:​0:​0Z согласно UTC стандарту (см. [[https://​tools.ietf.org/​html/​rfc3339|RFC3339]] для подробной информации насчёт времени в UTC).
Строка 71: Строка 85:
   * **auth_time** – (Authentication time) время, когда была произведена аутентификация пользователя. Значение представляется в виде JSON числа, показывающий количество секунд прошедших с 1970-01-01T0:​0:​0Z согласно UTC стандарту.   * **auth_time** – (Authentication time) время, когда была произведена аутентификация пользователя. Значение представляется в виде JSON числа, показывающий количество секунд прошедших с 1970-01-01T0:​0:​0Z согласно UTC стандарту.
   * **nonce** – регистрозависимая строка,​ ассоциирующая сессию клиента с **ID Token**’ом,​ чтобы избежать атак повторного воспроизведения (replay attacks). Клиенты должны проверять,​ чтобы это значение было равно значению **nonce** в authentication request'​e.   * **nonce** – регистрозависимая строка,​ ассоциирующая сессию клиента с **ID Token**’ом,​ чтобы избежать атак повторного воспроизведения (replay attacks). Клиенты должны проверять,​ чтобы это значение было равно значению **nonce** в authentication request'​e.
-  * **amr** – (Authentication methods references) JSON массив строк, хранящий методы аутентификации,​ использованные при аутентификации пользователя. Например,​ может покаазть,​ что при аутентификации был использован пароль и OTP.+  * **amr** – (Authentication methods references) JSON массив строк, хранящий методы аутентификации,​ использованные при аутентификации пользователя. Например,​ может покаазть,​ что при аутентификации был использован пароль и OTP. Возможные значения:​ **sc** (Паспорт),​ **pwd** (Логин/​пароль),​ **cds** (Облачная ЭП)
   * **at_hash** – хэш Access Token’а. Хэш вычисляется по левой половине хэшей октетов Access Token“a в формате ASCII. Примененный хэш-алгоритм указан в головной части (header) **ID Token**’a в значении ''​alg''​. ​   * **at_hash** – хэш Access Token’а. Хэш вычисляется по левой половине хэшей октетов Access Token“a в формате ASCII. Примененный хэш-алгоритм указан в головной части (header) **ID Token**’a в значении ''​alg''​. ​
  
Строка 77: Строка 91:
 ====== Authentication request ====== ====== Authentication request ======
  
-Authentication request (Запрос на аутентификацию) — это GET или POST запрос клиента в Authorization Endpoint, который требует,​ чтобы пользователь аутентифицировался в ЕСИА+**Authentication request** (Запрос на аутентификацию) — это GET или POST запрос клиента в Authorization Endpoint, который требует,​ чтобы пользователь аутентифицировался в ЕСИ. ​
  
 В случае GET запроса,​ параметры запроса указывается непосредственно в самом запросе.\\ В случае GET запроса,​ параметры запроса указывается непосредственно в самом запросе.\\
Строка 84: Строка 98:
  
   * **scope** (Обязательный) – разделенные пробелом значения,​ показывающие,​ какие данные необходимы клиенту. **Обязательно должно содержать значение ''​openid''​.**   * **scope** (Обязательный) – разделенные пробелом значения,​ показывающие,​ какие данные необходимы клиенту. **Обязательно должно содержать значение ''​openid''​.**
-  * **response_type** (Обязательный) – определяет способ процесса авторизации. В случае с ЕСИА используется значение ''​**code**''​.  +  * **response_type** (Обязательный) – определяет способ процесса авторизации. В случае с ЕСИ используется значение ''​**code**''​.  
-  * **client_id** (Обязательный) – идентификатор клиента,​ выданный ЕСИА+  * **client_id** (Обязательный) – идентификатор клиента,​ выданный ЕСИ. 
-  * **redirect_uri** (Обязательный) – URI, куда будет отправлен ответ ЕСИА после того, как пользователь пройдёт аутентификацию в ЕСИА. Он задаётся вместе с ''​client_id''​ при регистрации клиента.+  * **redirect_uri** (Обязательный) – URI, куда будет отправлен ответ ЕСИ после того, как пользователь пройдёт аутентификацию в ЕСИ. Он задаётся вместе с ''​client_id''​ при регистрации клиента.
   * **nonce** (Опциональный) – регистрозависимая строка ассоциирующая сессию клиента с **ID Token**’ом,​ чтобы избежать атак повторного воспроизведения (replay attacks).   * **nonce** (Опциональный) – регистрозависимая строка ассоциирующая сессию клиента с **ID Token**’ом,​ чтобы избежать атак повторного воспроизведения (replay attacks).
   * **state** (Опциональный) – значение для сохраниния состояние между запросом и callback’ом. Обычно для борьбы с CSRF это значение криптографически привязывается к куки браузера. ​     * **state** (Опциональный) – значение для сохраниния состояние между запросом и callback’ом. Обычно для борьбы с CSRF это значение криптографически привязывается к куки браузера. ​  
Строка 93: Строка 107:
 ===== PKCE ===== ===== PKCE =====
  
-Так как ЕСИА использует **Authorization Code flow with PKCE** ([[https://​tools.ietf.org/​html/​rfc7636|RFC7636]]),​ при запросе на авторизацию необходимо сделать следующее:​+Так как ЕСИ использует **Authorization Code flow with PKCE** ([[https://​tools.ietf.org/​html/​rfc7636|RFC7636]]),​ при запросе на аутентификацию необходимо дополнительно сделать следующее:​
  
-  * Сформировать **code verifier** - криптографически случайная строка размером от 43 до 128 символов,​ и состоящая из символов a-zA-Z0-9 -._~+  * Сформировать и сохранить **code_verifier** (он ещё понадобится при запросе на получение токенов) ​- криптографически случайная строка размером от 43 до 128 символов,​ и состоящая из символов ​''​a-z A-Z 0-9 -._~''​
   * Сформировать **code_challenge** следующим образом:​   * Сформировать **code_challenge** следующим образом:​
  
   base64url(sha256(code_verifier))   base64url(sha256(code_verifier))
    
- * Добавить в запрос следующий параметр:​+  ​* Добавить в запрос следующие параметры:
  
 +  &​code_challenge={сформированный code_challenge}
   code_challenge_method=S256   code_challenge_method=S256
 ===== Валидация запроса ===== ===== Валидация запроса =====
  
-При получении запроса на аутентификацию ЕСИА проверит,​ чтобы все параметры запроса соответствовали стандарту OAuth 2.0 и OpenId Connect. Подразумевается наличие обязательных параметров **scope**, **response_type**, ​ **client_id**,​ **redirect_uri**. +При получении запроса на аутентификацию ЕСИ проверит,​ чтобы все параметры запроса соответствовали стандарту OAuth 2.0 и OpenId Connect. Подразумевается наличие обязательных параметров **scope**, **response_type**, ​ **client_id**,​ **redirect_uri**. 
-В случае,​ если запрос составлен не верно, ЕСИА вернёт ошибку на указанный **redirect_uri**. Информация об ошибке будет представлена в виде параметров.+В случае,​ если запрос составлен не верно, ЕСИ вернёт ошибку на указанный **redirect_uri**. Информация об ошибке будет представлена в виде параметров.
  
 Возможны следующие параметры:​ Возможны следующие параметры:​
Строка 112: Строка 127:
     * **invalid_request** – неправильный запрос. Возникает,​ если в запросе отсутствует обязательный параметр,​ запрос содержит неправильное значение параметра,​ включает в себя одинаковый параметр более одного раза и пр.     * **invalid_request** – неправильный запрос. Возникает,​ если в запросе отсутствует обязательный параметр,​ запрос содержит неправильное значение параметра,​ включает в себя одинаковый параметр более одного раза и пр.
     * **unauthorized_client** – неавторизованный клиент. Клиент не авторизован и не может получить авторизационный код.     * **unauthorized_client** – неавторизованный клиент. Клиент не авторизован и не может получить авторизационный код.
-    * **access_denied** – отказано в доступе. Пользователь либо ЕСИА отколнили запрос. +    * **access_denied** – отказано в доступе. Пользователь либо ЕСИ отколнили запрос. 
-    * **unsupported_response_type** – неподдерживаемый возвращаемый тип. ЕСИА не поддерживает получение авторизационного кода указанным методом. ​+    * **unsupported_response_type** – неподдерживаемый возвращаемый тип. ЕСИ не поддерживает получение авторизационного кода указанным методом. ​
     * **invalid_scope** – неправильный scope. Запрашиваемое(-ые) значения scope неверны,​ неизвестны,​ либо составлены неправильно.     * **invalid_scope** – неправильный scope. Запрашиваемое(-ые) значения scope неверны,​ неизвестны,​ либо составлены неправильно.
-    * **server_error** – ошибка сервера. Ошибка со стороны ЕСИА, которая не позволяет обработать запрос. +    * **server_error** – ошибка сервера. Ошибка со стороны ЕСИ, которая не позволяет обработать запрос. 
-    * **temporarily_unavailable** – временно недоступно. В данный момент ЕСИА не может обработать запрос из-за перегрузки либо технических работах на сервере.+    * **temporarily_unavailable** – временно недоступно. В данный момент ЕСИ не может обработать запрос из-за перегрузки либо технических работах на сервере.
     * **invalid_request_uri** – неправильный **redirect_uri**. **redirect_uri** возвращает ошибку при перенаправлении либо содержит неправильные данные.     * **invalid_request_uri** – неправильный **redirect_uri**. **redirect_uri** возвращает ошибку при перенаправлении либо содержит неправильные данные.
-  * **error_description** (Опциональный) – описание ошибки. Описание ошибки понятное человеку. +  * **error_description** (Опциональный) – описание ошибки понятное человеку. 
-  * **error_uri** (Опциональный) – URI ошибки. ​URI веб-страницы,​ на которой находится дополнительная информация об ошибке.+  * **error_uri** (Опциональный) – URI веб-страницы,​ на которой находится дополнительная информация об ошибке.
   * **state** (Опциональный) – состояние согласно OAuth 2.0. Ставится значение,​ полученное от клиента.   * **state** (Опциональный) – состояние согласно OAuth 2.0. Ставится значение,​ полученное от клиента.
  
Строка 130: Строка 145:
  
 Пример ответа клиента,​ который перенаправляет браузер пользователя к Authorization endpoint для запроса на аутентификацию:​ Пример ответа клиента,​ который перенаправляет браузер пользователя к Authorization endpoint для запроса на аутентификацию:​
-  ​HTTP/​1.1 ​302 Found +  302 Found 
-  Location: https://​{базовый-адрес-ЕСИА}/​connect/​authorize?​+  Location: https://​{базовый-адрес-ЕСИ}/​connect/​authorize?​
     response_type=code     response_type=code
     &​scope=openid%20profile%20email     &​scope=openid%20profile%20email
     &​client_id=s6BhdRkqt3     &​client_id=s6BhdRkqt3
     &​state=af0ifjsldkj     &​state=af0ifjsldkj
-    &​redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb+    &​redirect_uri=https://client.example.org/cb 
 +    &​code_challenge=UTGRtxSHqyGSX1z54iTOBB6Z3WdAMeFv7iYSC6yqx0w 
 +    &​code_challenge_method=S256
  
-Пример запроса,​ который отправит браузер пользователя к ЕСИА в ответ на redirect ответ клиента:​+Пример запроса,​ который отправит браузер пользователя к ЕСИ в ответ на redirect ответ клиента:​
  
-  GET https://​{базовый-адрес-ЕСИА}/​connect/​authorize?​+  GET https://​{базовый-адрес-ЕСИ}/​connect/​authorize?​
     response_type=code     response_type=code
     &​scope=openid%20profile%20email     &​scope=openid%20profile%20email
     &​client_id=s6BhdRkqt3     &​client_id=s6BhdRkqt3
     &​state=af0ifjsldkj     &​state=af0ifjsldkj
-    &​redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb HTTP/1.1+    &​redirect_uri=https://client.example.org/​cb  
 +    &​code_challenge=UTGRtxSHqyGSX1z54iTOBB6Z3WdAMeFv7iYSC6yqx0w 
 +    &​code_challenge_method=S256
    
  
Строка 156: Строка 175:
     &​state=af0ifjsldkj     &​state=af0ifjsldkj
  
-Пример ответа ЕСИА при успешной валидации запроса на аутентификацию:​+Пример ответа ЕСИ при успешной валидации запроса на аутентификацию:​
  
   HTTP/1.1 302 Found   HTTP/1.1 302 Found
Строка 166: Строка 185:
    
  
-Для получения ID Token’а и Access Token’а клиент должен отправить POST запрос в Token Endpoint ЕСИА, предоставив полученный авторизационный код (**code**), свой **client_id**,​ **client_secret** и **redirect_uri**.+Для получения ID Token’а и Access Token’а клиент должен отправить POST запрос в Token Endpoint ЕСИ, предоставив полученный авторизационный код (**code**), свой **client_id**,​ **client_secret** и **redirect_uri**.
  
 **client_id** и **client_secret** должны находится в заголовке запроса **Authorization** типа **Basic** в качестве имени пользователя и пароля соответственно. **client_id** и **client_secret** должны находится в заголовке запроса **Authorization** типа **Basic** в качестве имени пользователя и пароля соответственно.
Строка 174: Строка 193:
   &​code={ваш авторизационный код}   &​code={ваш авторизационный код}
   &​redirect_uri={ваш redirect_uri}   &​redirect_uri={ваш redirect_uri}
 +  &​code_verifier={code_verifier,​ который вы сгенерировали на этапе Authentication request}
  
 ===== Пример запроса к Token Endpoint ===== ===== Пример запроса к Token Endpoint =====
  
-  POST https://​{базовый-адрес-ЕСИА}/​connect/​token+  POST https://​{базовый-адрес-ЕСИ}/​connect/​token
   Content-Type:​ application/​x-www-form-urlencoded   Content-Type:​ application/​x-www-form-urlencoded
   Authorization:​ Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW   Authorization:​ Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
   ​   ​
   grant_type=authorization_code&​code=SplxlOBeZQQYbYS6WxSbIA   grant_type=authorization_code&​code=SplxlOBeZQQYbYS6WxSbIA
-  &​redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb+  &​redirect_uri=https://client.example.org/cb 
 +  &​code_verifier=oV0CFtgI2ywyqV6y5Z2gy49stoKn0T2daY_nLvXDeWRNqQeJ
  
  
 ===== Валидация запроса ===== ===== Валидация запроса =====
  
-ЕСИА валидирует запрос следующим образом:​+ЕСИ валидирует запрос следующим образом:​
  
   - Аутентифицирует клиента по полученным **client_id** и **client_secret**.   - Аутентифицирует клиента по полученным **client_id** и **client_secret**.
   - Проверит авторизационный код. Действительно ли он был выдан данному клиенту. Правильный ли он, не был ли он использован до этого, был ли выдан в результате запроса на аутентификацию.   - Проверит авторизационный код. Действительно ли он был выдан данному клиенту. Правильный ли он, не был ли он использован до этого, был ли выдан в результате запроса на аутентификацию.
   - Сравнит полученный **redirect_uri** со значением **redirect_uri** полученном при запроса на аутентификацию.   - Сравнит полученный **redirect_uri** со значением **redirect_uri** полученном при запроса на аутентификацию.
 +  - Сформирует **code_challenge** из полученнго **code_verifier** и сравнит с ранее полученным **code_challenge** при запросе на аутентификацию.
  
  
-При успешной валидации ЕСИА вернёт **Id Token** и **Access Token** в ответ в формате ''​application/​json'',​ а также следующие поля:+При успешной валидации ЕСИ вернёт **Id Token** и **Access Token** в ответ в формате ''​application/​json'',​ а также следующие поля:
   * **token_type** – по стандарту всегда имеет значение ''​Bearer''​.   * **token_type** – по стандарту всегда имеет значение ''​Bearer''​.
   * **refresh_token** – токен, позволяющий получить новый access token после того, как он истёк. Выдаётся в случае,​ если было указано значение scope ''​offline_access''​ во время authentication request.   * **refresh_token** – токен, позволяющий получить новый access token после того, как он истёк. Выдаётся в случае,​ если было указано значение scope ''​offline_access''​ во время authentication request.
Строка 201: Строка 223:
 При возникновении ошибки,​ информация о ней вернётся в том же формате,​ что и при запросе на аутентификацию. При возникновении ошибки,​ информация о ней вернётся в том же формате,​ что и при запросе на аутентификацию.
  
-Пример успешного ответа ЕСИА с **ID Token**'​ом и **Access Token**'​ом:​+Пример успешного ответа ЕСИ с **ID Token**'​ом и **Access Token**'​ом:​
  
   HTTP/1.1 200 OK   HTTP/1.1 200 OK
Строка 225: Строка 247:
 Пример запроса:​ Пример запроса:​
  
-  GET https://​{базовый-адрес-ЕСИА}connect/​userinfo ​+  GET https://​{базовый-адрес-ЕСИ}connect/​userinfo ​
   Host: server.example.com   Host: server.example.com
   Authorization:​ Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImNhZzBDYk1UYzh4d293MDVaVDRpRFEiLCJ0eXAiOiJhdCtqd3QifQ.eyJuYmYiOjE1ODQ0NDExNTAsImV4cCI6MTU4NDQ0NDc1MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo3MDAwIiwiYXVkIjoibm90aWZpY2F0aW9uX2FwaSIsImNsaWVudF9pZCI6Im12Yy1jbGllbnQiLCJzdWIiOiIxMDAwMDAwIiwiYXV0aF90aW1lIjoxNTg0NDQxMTQ4LCJpZHAiOiJsb2NhbCIsInNjb3BlIjpbInByb2ZpbGUiLCJvcGVuaWQiLCJlbWFpbCIsInBob25lIiwibm90aWZpY2F0aW9uX2FwaSJdLCJhbXIiOlsibWZhIl19.KC-_Ua4k3rbRAVEkWF_NffnlGqInfSsSiD-zEk5dmLn5a7PAiiptDNqGpmSJbMhl2rbyFqTrBtUDxmkSbXALDWTAvuRqagTkEvlu2uUpJSQ9c_aYLsW4QdUdR2uAKliRlNAQFygWkN4xsXPSaB6E0B71YKmQcYutssBBcP3tBu_E4EDMW30Vky_osQeB8moHkPthMxXkpBxLSKieY77FOQDJzbaVmzrm9wmIor7OuwFtp0b9yKdpAsg9cGbgcmqW5pYNSa2GdhEzYrf6tkfF7tyuw-LYbJjCklfPwIQNk-RT1TicSwdZzsBWoAS8pWiBfwN4MAaA6TP4O6LA7hcdZw   Authorization:​ Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImNhZzBDYk1UYzh4d293MDVaVDRpRFEiLCJ0eXAiOiJhdCtqd3QifQ.eyJuYmYiOjE1ODQ0NDExNTAsImV4cCI6MTU4NDQ0NDc1MCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo3MDAwIiwiYXVkIjoibm90aWZpY2F0aW9uX2FwaSIsImNsaWVudF9pZCI6Im12Yy1jbGllbnQiLCJzdWIiOiIxMDAwMDAwIiwiYXV0aF90aW1lIjoxNTg0NDQxMTQ4LCJpZHAiOiJsb2NhbCIsInNjb3BlIjpbInByb2ZpbGUiLCJvcGVuaWQiLCJlbWFpbCIsInBob25lIiwibm90aWZpY2F0aW9uX2FwaSJdLCJhbXIiOlsibWZhIl19.KC-_Ua4k3rbRAVEkWF_NffnlGqInfSsSiD-zEk5dmLn5a7PAiiptDNqGpmSJbMhl2rbyFqTrBtUDxmkSbXALDWTAvuRqagTkEvlu2uUpJSQ9c_aYLsW4QdUdR2uAKliRlNAQFygWkN4xsXPSaB6E0B71YKmQcYutssBBcP3tBu_E4EDMW30Vky_osQeB8moHkPthMxXkpBxLSKieY77FOQDJzbaVmzrm9wmIor7OuwFtp0b9yKdpAsg9cGbgcmqW5pYNSa2GdhEzYrf6tkfF7tyuw-LYbJjCklfPwIQNk-RT1TicSwdZzsBWoAS8pWiBfwN4MAaA6TP4O6LA7hcdZw
   ​   ​
   ​   ​
-Ответ от ЕСИА:+Ответ от ЕСИ:
  
 +Если пользователь заходит как физическое лицо:
   HTTP/1.1 200 OK   HTTP/1.1 200 OK
   Content-type:​ application/​json   Content-type:​ application/​json
Строка 248: Строка 271:
     "​phone_number":"​+996000123456",​     "​phone_number":"​+996000123456",​
     "​phone_number_verified":"​True"​     "​phone_number_verified":"​True"​
 +  }
 +
 +Если пользователь заходит как юридическое лицо:
 +  HTTP/1.1 200 OK
 +  Content-Type:​ application/​json
 +  {
 +     "​sub":​ "​1000000",​
 +     "​organization_tin":​ "​ОсОО \"/​Компания\"",​
 +     "​position_name":​ "​Директор",​
 +     "​pin":"​20101199012345",​
 +     "​citizenship":"​KGZ",​
 +     "​family_name":"​Андреев",​
 +     "​given_name":"​Андрей",​
 +     "​middle_name":"​Андреевич",​
 +     "​name":"​Андреев Андрей Андреевич",​
 +     "​gender":"​male",​
 +     "​birthdate":"​1990-01-01",​
 +     "​email":"​some.email@gmail.com",​
 +     "​email_verified":"​True",​
 +     "​phone_number":"​+996000123456",​
 +     "​phone_number_verified":"​True"​
   }   }
iis-info.1594029492.txt.gz · Последние изменения: 2020/07/06 09:58 — admin1