Взаимодействие с сервисом ЕСИА Смарт
В данном разделе приводится пошаговое взаимодействие клиентской системы и сервиса ЕСИА Смарт.
Схема процесса взаимодействия между Клиентской ИС, ЕСИА Смарт и ЕСИА
ЕСИА Смарт не хранит персональные данные пользователей в базе данных, т.к. не использует базу данных. Передача персональных данных пользователя происходит через защищенный по https канал связи.
Получение данных
/auth/esia_oauth
Для инициации процесса идентификации и аутентификации пользователей через ЕСИА с последующим получением данных, необходимо сформировать запрос и передать его на соответствующий URL сервиса ЕСИА Смарт. Для клиентской системы запрос будет иметь следующий вид:
https://Домен_ЕСИА_Смарт/auth/esia_oauth/
В случае успешной авторизации в КИС будет отправлен POST запрос на url, указанный в параметре CIS_REDIRECT_URI
, что в примере конфигурации соответствует следующему URL:
https://Домен_КИС/callback
В body
запроса будут переданы данные, полученные из защищённого хранилища ЕСИА. Например, в данном случае, в соответствии с запрашаваемым набором scope
в КИС будет направлен следующий набор:
{
"provider": "esia_oauth",
"uid": "1000303233",
"info": {
"stateFacts": [
"EntityRoot"
],
"firstName": "Имя6",
"lastName": "Фамилия6",
"middleName": "Отчество6",
"trusted": true,
"citizenship": "RUS",
"updatedOn": 1692345756,
"rfgUOperatorCheck": false,
"status": "REGISTERED",
"verifying": false,
"rIdDoc": 219122,
"containsUpCfmCode": false,
"eTag": "B464E58CBE40DE862E178C33C08A3A40D442F6BE",
"documents": {
"rf_passport": [
{
"stateFacts": [
"Identifiable"
],
"id": 219122,
"type": "RF_PASSPORT",
"vrfStu": "VERIFIED",
"series": "5313",
"number": "409830",
"issueDate": "22.07.2014",
"issueId": "560043",
"issuedBy": "Отделом УФМС России по Оренбургской обл. в п.Тюльган",
"eTag": "56A2669CE748F7E8A277A970A8005F5B5A71D7C8"
}
]
},
"orgs": [
{
"oid": 1000547703,
"prnOid": 1000303233,
"fullName": "Индивидуальный предприниматель Иванов Иван Иванович",
"shortName": "ИП Иванов И. И.",
"ogrn": "312344215554346",
"type": "BUSINESS",
"chief": true,
"admin": false,
"phone": "+7 (495) 111-11-11*111",
"email": "m.gerasimov_2@crpt.ru",
"active": true,
"hasRightOfSubstitution": true,
"hasApprovalTabAccess": false,
"isLiquidated": false
},
{
"oid": 1000298922,
"prnOid": 1000303233,
"fullName": "ОРГАНИЗАЦИЯ 1181280564",
"shortName": "ОРГАНИЗАЦИЯ 1181280564",
"ogrn": "2000000000002",
"type": "AGENCY",
"chief": true,
"admin": true,
"phone": "+7 (888) 888-88-87",
"email": "EsiaTest006@yandex.ru",
"active": true,
"hasRightOfSubstitution": true,
"hasApprovalTabAccess": true,
"isLiquidated": false
},
{
"oid": 1000575086,
"prnOid": 1000303233,
"fullName": "ОРГАНИЗАЦИЯ 301803654",
"shortName": "ОРГАНИЗАЦИЯ 301803654",
"ogrn": "3067176569150",
"type": "LEGAL",
"chief": false,
"admin": true,
"email": "nailtikov@yandex.ru",
"active": true,
"hasRightOfSubstitution": false,
"hasApprovalTabAccess": false,
"isLiquidated": false
}
],
"name": null
},
"credentials": {
"token": "eyJ2ZXIiOjEsInR5cCI6IkpXVCIsInNidCI6ImFjY2VzcyIsImFsZyI6IkdPU1QzNDEwXzIwMTJfMjU2In0.eyJuYmYiOjE2OTI5NzcwMzksInNjb3BlIjoiaWRfZG9jP29pZD0xMDAwMzAzMjMzIGZ1bGxuYW1lP29pZD0xMDAwMzAzMjMzIG9wZW5pZCB1c3Jfb3JnP29pZD0xMDAwMzAzMjMzIiwiaXNzIjoiaHR0cDpcL1wvZXNpYS1wb3J0YWwxLnRlc3QuZ29zdXNsdWdpLnJ1XC8iLCJ1cm46ZXNpYTpzaWQiOiI3YjZmNDgyZi1kYWJjLWE2NmQtOTdlYS1jMTQ3MzFhZTU3NDYiLCJ1cm46ZXNpYTpzYmpfaWQiOjEwMDAzMDMyMzMsImV4cCI6MTY5Mjk4NzgzOSwiaWF0IjoxNjkyOTc3MDM5LCJjbGllbnRfaWQiOiJSTkRTIn0.IZ3WIMrVV2xbzfR44ZXTwfTBTjgm_A6IjRFFuGfmj5cpCdtrei0idpf2NA6f9P3Qb6s_8LpWHuWTCM6FQu9q8Q",
"refresh_token": "2dd59e91-4e92-2b07-97ad-248615c3A0E9",
"expires_at": 1692987839,
"expires": true,
"id_token": "eyJ2ZXIiOjAsInR5cCI6IkpXVCIsInNidCI6ImlkIiwiYWxnIjoiR09TVDM0MTBfMjAxMl8yNTYifQ.eyJhdWQiOiJSTkRTIiwic3ViIjoxMDAwMzAzMjMzLCJuYmYiOjE2OTI5NzcwMzksImFtciI6IlBXRCIsInVybjplc2lhOmFtZCI6IlBXRCIsImF1dGhfdGltZSI6MTY5Mjk3NzAzNiwiaXNzIjoiaHR0cDpcL1wvZXNpYS1wb3J0YWwxLnRlc3QuZ29zdXNsdWdpLnJ1XC8iLCJ1cm46ZXNpYTpzaWQiOiI3YjZmNDgyZi1kYWJjLWE2NmQtOTdlYS1jMTQ3MzFhZTU3NDYiLCJ1cm46ZXNpYTpzYmoiOnsidXJuOmVzaWE6c2JqOmx2bCI6IlBSIiwidXJuOmVzaWE6c2JqOnR5cCI6IlAiLCJ1cm46ZXNpYTpzYmo6aXNfdHJ1Ijp0cnVlLCJ1cm46ZXNpYTpzYmo6b2lkIjoxMDAwMzAzMjMzLCJ1cm46ZXNpYTpzYmo6bmFtIjoiT0lELjEwMDAzMDMyMzMifSwiZXhwIjoxNjkyOTg3ODM5LCJpYXQiOjE2OTI5NzcwMzl9.Am9ceoG8ftPSbC-lxSyDO6sfdafLqRkr1bEPp1gAz51Q_Ii6AUEHpi83LQyPvPFLFg1gsuuWKxTBJhRc46S8zw"
},
"extra": {
"payload": {
"nbf": 1692977039,
"scope": "id_doc?oid=1000303233 fullname?oid=1000303233 openid usr_org?oid=1000303233",
"iss": "http://esia-portal1.test.gosuslugi.ru/",
"urn:esia:sid": "7b6f482f-dabc-a66d-97ea-c14731ae5746",
"urn:esia:sbj_id": 1000303233,
"exp": 1692987839,
"iat": 1692977039,
"client_id": "RNDS"
}
}
}
В приведённом ответе присутствует секция credentials
, в которой содержатся токены доступа, идентификации и обновления, полученные от ЕСИА.
"credentials": {
"token": "eyJ2ZXIiOjEsInR5cCI6IkpXVCIsInNidCI6ImFjY2VzcyIsImFsZyI6IkdPU1QzNDEwXzIwMTJfMjU2In0.eyJuYmYiOjE2OTI5NzcwMzksInNjb3BlIjoiaWRfZG9jP29pZD0xMDAwMzAzMjMzIGZ1bGxuYW1lP29pZD0xMDAwMzAzMjMzIG9wZW5pZCB1c3Jfb3JnP29pZD0xMDAwMzAzMjMzIiwiaXNzIjoiaHR0cDpcL1wvZXNpYS1wb3J0YWwxLnRlc3QuZ29zdXNsdWdpLnJ1XC8iLCJ1cm46ZXNpYTpzaWQiOiI3YjZmNDgyZi1kYWJjLWE2NmQtOTdlYS1jMTQ3MzFhZTU3NDYiLCJ1cm46ZXNpYTpzYmpfaWQiOjEwMDAzMDMyMzMsImV4cCI6MTY5Mjk4NzgzOSwiaWF0IjoxNjkyOTc3MDM5LCJjbGllbnRfaWQiOiJSTkRTIn0.IZ3WIMrVV2xbzfR44ZXTwfTBTjgm_A6IjRFFuGfmj5cpCdtrei0idpf2NA6f9P3Qb6s_8LpWHuWTCM6FQu9q8Q",
"refresh_token": "2dd59e91-4e92-2b07-97ad-248615c3A0E9",
"expires_at": 1692987839,
"expires": true,
"id_token": "eyJ2ZXIiOjAsInR5cCI6IkpXVCIsInNidCI6ImlkIiwiYWxnIjoiR09TVDM0MTBfMjAxMl8yNTYifQ.eyJhdWQiOiJSTkRTIiwic3ViIjoxMDAwMzAzMjMzLCJuYmYiOjE2OTI5NzcwMzksImFtciI6IlBXRCIsInVybjplc2lhOmFtZCI6IlBXRCIsImF1dGhfdGltZSI6MTY5Mjk3NzAzNiwiaXNzIjoiaHR0cDpcL1wvZXNpYS1wb3J0YWwxLnRlc3QuZ29zdXNsdWdpLnJ1XC8iLCJ1cm46ZXNpYTpzaWQiOiI3YjZmNDgyZi1kYWJjLWE2NmQtOTdlYS1jMTQ3MzFhZTU3NDYiLCJ1cm46ZXNpYTpzYmoiOnsidXJuOmVzaWE6c2JqOmx2bCI6IlBSIiwidXJuOmVzaWE6c2JqOnR5cCI6IlAiLCJ1cm46ZXNpYTpzYmo6aXNfdHJ1Ijp0cnVlLCJ1cm46ZXNpYTpzYmo6b2lkIjoxMDAwMzAzMjMzLCJ1cm46ZXNpYTpzYmo6bmFtIjoiT0lELjEwMDAzMDMyMzMifSwiZXhwIjoxNjkyOTg3ODM5LCJpYXQiOjE2OTI5NzcwMzl9.Am9ceoG8ftPSbC-lxSyDO6sfdafLqRkr1bEPp1gAz51Q_Ii6AUEHpi83LQyPvPFLFg1gsuuWKxTBJhRc46S8zw"
},
Токены доступа и идентифкации содержат информацию о пользователе, его учётной записи, способе авторизации и т.д. Вся информация закодирована в base64, поэтому при необходимости её получения необходимо выполнить процедуру декодирования. Например, в результате декодирования токена идентифкации может быть получен такой набор:
{
"aud": "RNDS",
"sub": 1000303233,
"nbf": 1692977039,
"amr": "PWD",
"urn:esia:amd": "PWD",
"auth_time": 1692977036,
"iss": "http://esia-portal1.test.gosuslugi.ru/",
"urn:esia:sid": "7b6f482f-dabc-a66d-97ea-c14731ae5746",
"urn:esia:sbj": {
"urn:esia:sbj:lvl": "PR",
"urn:esia:sbj:typ": "P",
"urn:esia:sbj:is_tru": true,
"urn:esia:sbj:oid": 1000303233,
"urn:esia:sbj:nam": "OID.1000303233"
},
"exp": 1692987839,
"iat": 1692977039
}
Все поля, присутствующие в токене идентифкации описаны в методических рекомендациях по использованию ЕСИА.
Кроме данных на тот же URL клиентской системы будет отправлен GET-запрос следующего вида:
https://Домен_КИС/callback?code=eyJ2ZXIiOjEsInR5cCI6IkpXVCIsInNidCI6ImF1dGhvcml6YXRpb25fY29kZSIsImFsZyI6IkdPU1QzNDEwXzIwMTJfMjU2In0.eyJuYmYiOjE2OTMxNDY3MDEsInNjb3BlIjoiaWRfZG9jP29pZD0xMDAwMzAzMjMzIGZ1bGxuYW1lP29pZD0xMDAwMzAzMjMzIG9wZW5pZCB1c3Jfb3JnP29pZD0xMDAwMzAzMjMzIiwiYXV0aF90aW1lIjoxNjkzMTQ2Njk5LCJpc3MiOiJodHRwOlwvXC9lc2lhLXBvcnRhbDEudGVzdC5nb3N1c2x1Z2kucnVcLyIsInVybjplc2lhOnNpZCI6ImMxODdiZDViLTczZDItMGQyOS1kOTkzLTIzYjFiYjY4YTU2YyIsInVybjplc2lhOmNsaWVudDpzdGF0ZSI6IjViYTk4OTMwLTI3MTQtMDEzYy0xZTFlLTAwMGMyOWQzMjA0MyIsImF1dGhfbXRoZCI6IlBXRCIsInVybjplc2lhOnNiaiI6eyJ1cm46ZXNpYTpzYmo6bHZsIjoiUFIiLCJ1cm46ZXNpYTpzYmo6dHlwIjoiUCIsInVybjplc2lhOnNiajppc190cnUiOnRydWUsInVybjplc2lhOnNiajpvaWQiOjEwMDAzMDMyMzMsInVybjplc2lhOnNiajpuYW0iOiJPSUQuMTAwMDMwMzIzMyJ9LCJleHAiOjE2OTMxNDY5NDEsInBhcmFtcyI6e30sImlhdCI6MTY5MzE0NjcwMSwiY2xpZW50X2lkIjoiUk5EUyJ9.RcIWR5Ppb-5QiTLsHTzs2Sv2XWPffzXZ55NSjHXebbQWaCClh-eyhYEsIO1ZKb86evj9cmFZHCB2PxcmkSKzmA
где, в параметре code
передается авторизационный код.
В случае возникновения ошибки будет редирект на URL возврата с указанием ошибки:
https://Домен_КИС/callback?error=bad_request&error_description=Нет+ни+одного+поддерживаемого+скоупа
где, в параметрах error и error_description хранится информация об ошибке.
Ограничение на получение данных
На данный момент сервис ЕСИА Смарт не поддерживает возможность получения расширенного набора данных, например, об организациях пользователя. Допустимые значения scope, которые могут быть запрошены у ЕСИА приведены в методических рекомендациях. В таблице ниже для примера приведены допустимые значения scope для получения данных об организациях.
№ | Название scope | Название набора данных | Состав набора данных |
---|---|---|---|
1. | org_shortname | Сокращенное наименование организации | Сокращенное наименование организации |
2. | org_fullname | Полное наименование организации | Полное наименование организации |
3. | org_type | Тип организации | Тип организации |
4. | org_ogrn | ОГРН организации | ОГРН организации |
5. | org_inn | ИНН организации | ИНН организации |
6. | org_leg | ОПФ организации | ОПФ организации |
7. | org_kpp | КПП организации | КПП организации |
8. | org_agencyterrange | Территориальная принадлежность ОГВ | Территориальная принадлежность ОГВ |
9. | org_agencytype | Тип ОГВ | Тип ОГВ |
10. | org_oktmo | ОКТМО организации | ОКТМО организации |
11. | org_ctts | Контакты организации: номер телефона, номер факса, адрес электронной почты | Контакты организации: номер телефона, номер факса, адрес электронной почты |
12. | org_addrs | Адреса организации (почтовый адрес, юридический адрес): индекс, идентификатор страны, адрес в виде строки (не включая дом, строение, корпус, номер квартиры), строение, корпус, дом, квартира, код ФИАС, регион, город, внутригородской район, район, поселение, доп. территория, улица на доп. территории, улица | Адреса организации (почтовый адрес, юридический адрес): индекс, идентификатор страны, адрес в виде строки (не включая дом, строение, корпус, номер квартиры), строение, корпус, дом, квартира, код ФИАС, регион, город, внутригородской район, район, поселение, доп. территория, улица на доп. территории, улица |
13. | org_vhls | Транспортные средства организации: название, государственный регистрационный знак, серия и номер свидетельства о регистрации | Транспортные средства организации: название, государственный регистрационный знак, серия и номер свидетельства о регистрации |
14. | org_grps | Группы, владельцем которых является организация | Группы, владельцем которых является организация |
15. | org_emps | Данные о сотрудниках организации | Данные о сотрудниках организации |
16. | org_brhs | Данные о филиалах организации (название, КПП, ОПФ, контакты, адреса) | Данные о филиалах организации (название, КПП, ОПФ, контакты, адреса) |
17. | org_brhs_ctts | Контакты филиалов организации | Контакты филиалов организации |
18. | org_brhs_addrs | Адреса филиалов организации | Адреса филиалов организации |
19. | org_rcs | Центры регистрации организации | Центры регистрации организации |
20. | org_stms | Системы, владельцем которых является организация | Системы, владельцем которых является организация |
21. | org_invts | Приглашения, направленные организацией | Приглашения, направленные организацией |
22. | categories | Данные присвоенных организации видов деятельности | Данные присвоенных организации видов деятельности |
23. | org_ra | Данные центров обслуживания организации | Данные центров обслуживания организации |
Выход из системы ЕСИА
/logout
Для инициации процесса выхода из системы ЕСИА необходимо сформировать запрос и передать его на соответствующий URL шлюза. Для клиентской системы с вышеуказанными параметрами запрос будет иметь следующий вид:
curl https://Домен_ЕСИА_Смарт/logout
После завершения сессии в системе ЕСИА пользователь будет перенаправлен на адрес, указанный в ENV
-переменной ESIA_LOGOUT_REDIRECT_URI
.
ВАЖНО! На технологическом портале тестовой/промышленной ЕСИА, в настройках ИС, необходимо добавить URL, соответствующий точке возврата в шлюз после логаута на стороне ЕСИА.
Такой URL в данном случае будет иметь следующий вид:
https://Домен_ЕСИА_Смарт/logout