Взаимодействие с сервисом ЕСИА Смарт

В данном разделе приводится пошаговое взаимодействие клиентской системы и сервиса ЕСИА Смарт.

Получение данных

/auth/authorize 

Для инициации процесса идентификации и аутентификации пользователей через ЕСИА с последующим получением данных, необходимо сформировать запрос и передать его на соответствующий URL сервиса ЕСИА Смарт. Для клиентской системы запрос будет иметь следующий вид:

http://localhost:4567/auth/esia_oauth/

В случае успешной авторизации в КИС будет отправлен POST запрос на url, указанный в параметре CIS_REDIRECT_URI, что в примере конфигурации соответствует следующему URL:

http://localhost:4567/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-запрос следующего вида:

http://localhost:4567/callback?code=eyJ2ZXIiOjEsInR5cCI6IkpXVCIsInNidCI6ImF1dGhvcml6YXRpb25fY29kZSIsImFsZyI6IkdPU1QzNDEwXzIwMTJfMjU2In0.eyJuYmYiOjE2OTMxNDY3MDEsInNjb3BlIjoiaWRfZG9jP29pZD0xMDAwMzAzMjMzIGZ1bGxuYW1lP29pZD0xMDAwMzAzMjMzIG9wZW5pZCB1c3Jfb3JnP29pZD0xMDAwMzAzMjMzIiwiYXV0aF90aW1lIjoxNjkzMTQ2Njk5LCJpc3MiOiJodHRwOlwvXC9lc2lhLXBvcnRhbDEudGVzdC5nb3N1c2x1Z2kucnVcLyIsInVybjplc2lhOnNpZCI6ImMxODdiZDViLTczZDItMGQyOS1kOTkzLTIzYjFiYjY4YTU2YyIsInVybjplc2lhOmNsaWVudDpzdGF0ZSI6IjViYTk4OTMwLTI3MTQtMDEzYy0xZTFlLTAwMGMyOWQzMjA0MyIsImF1dGhfbXRoZCI6IlBXRCIsInVybjplc2lhOnNiaiI6eyJ1cm46ZXNpYTpzYmo6bHZsIjoiUFIiLCJ1cm46ZXNpYTpzYmo6dHlwIjoiUCIsInVybjplc2lhOnNiajppc190cnUiOnRydWUsInVybjplc2lhOnNiajpvaWQiOjEwMDAzMDMyMzMsInVybjplc2lhOnNiajpuYW0iOiJPSUQuMTAwMDMwMzIzMyJ9LCJleHAiOjE2OTMxNDY5NDEsInBhcmFtcyI6e30sImlhdCI6MTY5MzE0NjcwMSwiY2xpZW50X2lkIjoiUk5EUyJ9.RcIWR5Ppb-5QiTLsHTzs2Sv2XWPffzXZ55NSjHXebbQWaCClh-eyhYEsIO1ZKb86evj9cmFZHCB2PxcmkSKzmA

где, в параметре code передается авторизационный код.

В случае возникновения ошибки будет редирект на URL возврата с указанием ошибки:

http://localhost:4567/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 http://localhost:4567/logout

После завершения сессии в системе ЕСИА пользователь будет перенаправлен на адрес, указанный в ENV-переменной CIS_LOGOUT_URI.

ВАЖНО! На технологическом портале тестовой/промышленной ЕСИА, в настройках ИС, необходимо добавить URL, соответствующий точке возврата в шлюз после логаута на стороне ЕСИА.

Такой URL в данном случае будет иметь следующий вид:

http://localhost:4567/logout
  • Взаимодействие с сервисом ЕСИА Смарт
  • Получение данных
  • Ограничение на получение данных
  • Выход из системы ЕСИА