Идентификацию использовав есиа

Идентификацию использовав есиа pos gosuslugi

Идентификацию использовав есиа

Изменения в законодательстве, начинающие действовать с начала 2018 года и включающие в себя самые разнообразные области нашей с вами жизнедеятельности (закон о мессенджерах, о телемедицине и т.д.) объединяет одно – все большее проникновение информационных сервисов в нашу жизнь. Естественным является факт, что как и в реальной жизни, для получения человеком какой-либо услуги ему требуется пройти идентификацию. В офф-лайновой жизни средством авторизации является паспорт гражданина, а в он-лайн сфере таковым средством правительство решило признать ЕСИА — единая система идентификации и аутентификации.

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

Минкомсвязь России в рамках инфраструктуры электронного правительства создала и развивает Единую систему идентификации и аутентификации (ФГИС ЕСИА), цель которой — упорядочить и централизовать процессы регистрации, идентификации, аутентификации и авторизации пользователей.

1. Предоставляет информационным системам решение по достоверной идентификации пользователей (физических и юридических лиц, органов государственной власти).

Достоверность достигается за счет того, что:

  • регистрация лица в ЕСИА сопряжена с проверкой значимых для удостоверения личности критериев;
  • ЕСИА обеспечивает защиту размещённой в ней информации в соответствии с законодательством Российской Федерации.

2. Является ориентированной на пользователя и предоставляет возможности:

  • идентификации и аутентификации с использованием единой учетной записи и широкого спектра поддерживаемых методов аутентификации при доступе к различным информационным системам органов государственной власти;
  • управления своими персональными данными, размещенными в ЕСИА, и контроля над их предоставлением в информационные системы органов государственной власти.

Основные функциональные возможности ЕСИА:

  • идентификация и аутентификация пользователей, в том числе:
    • однократная аутентификация, которая дает пользователям ЕСИА следующее преимущество: пройдя процедуру идентификации и аутентификации в ЕСИА, пользователь может в течение одного сеанса работы обращаться к любым информационным системам, использующим ЕСИА, при этом повторная идентификация и аутентификация не требуется;
    • поддержка различных методов аутентификации: по паролю, по электронной подписи, а также двухфакторная аутентификация (по постоянному паролю и одноразовому паролю, высылаемому в виде sms-сообщения);
    • поддержка уровней достоверности идентификации пользователя (упрощённая учетная запись, стандартная учетная запись, подтвержденная учетная запись).
  • ведение идентификационных данных, а именно – ведение регистров физических, юридических лиц, органов и организаций, должностных лиц органов и организаций и информационных систем;
  • авторизация уполномоченных лиц органов государственной власти при доступе к следующим функциям ЕСИА:
    • ведение регистра должностных лиц органов власти в ЕСИА;
    • ведение справочника полномочий в отношении информационной системы и предоставление пользователям ЕСИА (зарегистрированным в ЕСИА как должностные лица) полномочий по доступу к ресурсам систем, зарегистрированным в ЕСИА;
    • делегирование вышеуказанных полномочий уполномоченным лицам нижестоящих органов государственной власти.
  • ведение и предоставление информации о полномочиях пользователей в отношении информационных систем, зарегистрированных в ЕСИА.

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

Законодательство со временем корректируется, и вместе с ним расширяется перечень организаций, которым разрешено подключиться к ЕСИА.

Люди, не знакомые с ситуацией, при слове «государственная» сразу представляют себе каналы связи, которые необходимо защитить при помощи отечественных криптоалгоритмов со всеми вытекающими затратами, лицензиями и оборудованием. Но, как бы смешно это не было (или печально), главная площадка для идентификации в стране – работает с иностранной криптографией (а куда деваться).

Поэтому, если вы хотите воспользоваться услугами данной платформы, то можете размещать свои ресурсы где у годно в нашей огромной стране, в том числе и в нашей инфраструктуре Cloud4Y.

Содержание
  1. Что же может получить коммерческая организация из ЕСИА?
  2. Как подключиться?
  3. Аутентификация пользователя в системе
  4. Подключаться или нет?
  5. Зачем нам нужна интеграция с ЕСИА?
  6. Что делать и как?
  7. Получение URL для переадресации
  8. Получение токена
  9. Валидация токена
  10. Получение данных пользователя
  11. Что теперь делать со всеми этими данными?
  12. Принципы работы пользовательской идентификации
  13. Как авторизоваться на площадке
  14. Вход в личный кабинет для частных лиц
  15. Вход с использованием номера телефона
  16. Авторизация через СНИЛС
  17. С использованием ЭЦП
  18. Какие функциональные возможности дает идентификация
  19. Какие существуют виды учетной записи
  20. Восстановление пароля
  21. Какие возможности приобретают зарегистрированные пользователи
  22. В чем преимущества подтвержденной учетной записи
  23. Что дает регистрация
  24. Основное предназначение портала
  25. Небольшая справка о развитии сервиса
  26. Какие функции исполняет
  27. Какие задачи решает
  28. В каком порядке осуществляется регистрация
  29. Прохождение аутентификации
  30. Какую информацию хранит информационный сервис
  31. Как защищены персональные данные

Что же может получить коммерческая организация из ЕСИА?

Перечень доступных к получению сведений зависит от:

  1. Категории организации, подключающейся к ЕСИА
  2. Использованного способа подключения к ЕСИА

Минкомсвязь ограничивает перечень данных, доступных коммерческим организациям. Обычно разрешают получать только сведения о ФИО, реквизитах паспорта (серия и номер, кем и когда выдан), гражданстве, а также признака «подтвержденности» аккаунта и идентификатора аккаунта в ЕСИА.

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

  1. личные данные (ФИО, пол, дата и место рождения, гражданство)
  2. данные идентификационных документов (СНИЛС, ИНН, общегражданский и заграничный паспорт, свидетельство о рождении, водительское удостоверение, военный билет, полис ОМС)
  3. контактная информация (email, мобильный и домашний телефон, адреса регистрации и проживания)
  4. сведения о детях (личные данные и документы)
  5. сведения о транспортных средствах (номер и свидетельство о регистрации)
  6. сведения об организациях и ИП (наименование, ОГРН, ИНН/КПП, организационно-правовая форма, юридический адрес, контакты, филиалы, списки сотрудников, полномочия сотрудников, транспортные средства организации)
  7. данные учетной записи (идентификатор аккаунта в ЕСИА, признак «подтвержденности» аккаунта)

Сведения предоставляются в том объеме, в каком они заполнены пользователем в ЕСИА, а также при условии согласия пользователя на предоставления этих сведений.

Как подключиться?

Чтобы подключить сайт своей организации, нужно пройти несколько довольно несложных процедур.

Идентификацию использовав есиа

В общих чертах для подключения к ЕСИА нужно:

  1. Убедиться, что вашей организации можно подключать свои системы к ЕСИА.
  2. Директору организации с помощью веб-приложения «Профиль ЕСИА» зарегистрировать организацию в ЕСИА.

    Идентификацию использовав есиа

    Идентификацию использовав есиа

  3. Ему также нужно прикрепить к учетной записи организации ответственного сотрудника и назначить ему право доступа в специальное приложение — Технологический портал ЕСИА. Если директор не планирует делегировать дальнейшие операции своему сотруднику, то тогда он все равно должен явно предоставить доступ себе к Технологическому порталу ЕСИА.

    Назначенному ответственному сотруднику организации нужно с помощью веб-приложения «Технологический портал ЕСИА»:

  4. Зарегистрировать учетную запись системы в ЕСИА. Мнемонику для системы придумать, либо использовать существующую мнемонику точки подключения к СМЭВ, если подключаемая к ЕСИА система раньше уже была подключена к СМЭВ.
  5. Загрузить в карточку системы ее сертификат.

    Ответственному сотруднику организации нужно:

  6. Поочередно подать по электронной почте заполненные в соответствии с регламентом заявки на использование программных интерфейсов ЕСИА в тестовой и промышленной среде.

    Идентификацию использовав есиа

    Разработчикам подключаемой системы:

  7. Доработать систему для подключения к ЕСИА, самостоятельно разработав код взаимодействия с ЕСИА в соответствии с действующим документом «Методические рекомендации по использованию ЕСИА» или использовать готовые решения, благо такие на рынке есть.
  8. Отладить взаимодействие в тестовой и промышленной среде ЕСИА.

Идентификацию использовав есиа

Здесь нужно заметить, что с 01.01.2018 г. взаимодействие по протоколу SAML 2.0 больше не будет разрешено (только для действующих систем). Для подключения к ЕСИА необходимо будет использовать протокол OAuth 2.0 / OpenID Connect (сейчас доступны оба варианта).

Аутентификация пользователя в системе

Рекомендуемый сценарий аутентификации пользователя при интеграции по OpenID Connect 1.0 в его базовом виде происходит по следующему сценарию:

  1. Пользователь нажимает на веб-странице системы-клиента кнопку «Войти через ЕСИА».
  2. Система-клиент формирует и отправляет в ЕСИА запрос на аутентификацию и перенаправляет браузер пользователя на специальную страницу предоставления доступа.
  3. ЕСИА осуществляет аутентификацию пользователя одним из доступных способов. Если пользователь ещё не зарегистрирован в ЕСИА, то он может перейти к процессу регистрации.
  4. Когда пользователь аутентифицирован, ЕСИА сообщает пользователю, что система-клиент запрашивает данные о нем в целях проведения идентификации и аутентификации, предоставляя перечень запрашиваемых системой-клиентом сведений.
  5. Если пользователь дает разрешение на проведение аутентификации системой-клиентом, то ЕСИА выдает системе-клиенту специальный авторизационный код.
  6. Система-клиент формирует в адрес ЕСИА запрос на получение маркера идентификации, включая в запрос полученный ранее авторизационный код.
  7. ЕСИА проверяет корректность запроса (например, что система-клиент зарегистрирована в ЕСИА) и авторизационного кода и передает системе-клиенту маркер идентификации.
  8. Система-клиент извлекает идентификатор пользователя из маркера идентификации. Если идентификатор получен, а маркер проверен, то система-клиент считает пользователя аутентифицированным. После получения маркера идентификации система-клиент использует REST-сервисы ЕСИА для получения дополнительных данных о пользователе, предварительно получив соответствующий маркер доступа.
Читайте также:  Школьные пособия раннего нового времени от часослова к orbis sensualium pictus

Идентификацию использовав есиа

Подключаться или нет?

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

Напомним, в соответствии с Федеральным законом №245 «О внесении изменений в Федеральный закон «О связи» от 29 июля 2017 года, операторы связи обязаны проверять достоверность сведений об абоненте. В законе закреплен перечень способов проверки, одним из которых является использование Единого портала государственных и муниципальных услуг или информационных систем госорганов при наличии подключения к ним у операторов через СМЭВ.

Поправки в ФЗ «О связи» вступают в силу 1 июня 2018. До этого времени операторы связи смогут протестировать работу своих систем со СМЭВ и ЕСИА.
Идентификацию использовав есиа

Становится ли чебурнет всё ближе? Официальных заявлений о планах сделать выход в Интернет возможным только через ЕСИА нами не найдено. На данный момент, по официальным данным, в ЕСИА зарегистрировано около 50 миллионов пользователей (физических лиц) и около 300 000 организаций.

Время на прочтение

Долгое время основным способом идентификации граждан был обычный паспорт. Ситуация изменилась, когда в 2011 году по заказу Минкомсвязи была внедрена Единая система идентификации и аутентификации (ЕСИА), ― она позволила распознавать личность человека и получать о ней данные в режиме онлайн.

Благодаря внедрению ЕСИА государственные и коммерческие организации, разработчики и владельцы онлайн-сервисов получили возможность ускорить и сделать более безопасными операции, связанные с вводом и верификацией пользовательских данных. Русфинанс Банк также решил использовать потенциал системы и при доработке сервиса по оформлению кредита онлайн (банк специализируется на автокредитовании) реализовал интеграцию с платформой.

Сделать это оказалось не так просто. Нужно было выполнить ряд требований и процедур, решить технические трудности.

В данной статье мы постараемся рассказать про основные моменты и методические указания, которые важно знать тем, кто хочет самостоятельно реализовать интеграцию с ЕСИА, а также приведём фрагменты кода на языке Java, которые помогут преодолеть трудности при разработке (часть реализации опущена, но общая последовательность действий ясна).

Надеемся, наш опыт поможет Java-разработчикам (и не только) сэкономить массу времени при разработке и ознакомлении с методическими рекомендациями Минкомсвязи.

Идентификацию использовав есиа

Зачем нам нужна интеграция с ЕСИА?

В связи с пандемией коронавируса количество офлайн сделок во многих направлениях кредитования начало сокращаться. Клиенты стали «уходить в онлайн», и для нас было жизненно важно укрепить своё онлайн-присутствие на рынке автокредитования. В процессе доработки сервиса «Автокредит» (на Хабре уже есть статья про его разработку) мы решили сделать интерфейс заведения кредитных заявок на сайте банка максимально удобным и простым. Интеграция с ЕСИА стала ключевым моментом в решении этой задачи, поскольку позволила автоматически получить персональные данные клиента.

Идентификацию использовав есиа

Кроме того, интеграция с ЕСИА позволила Русфинанс Банку:

  • сократить время заполнения онлайн-анкет;
  • уменьшить количество отказов пользователей при попытке заполнить большое количество полей вручную;
  • обеспечить поток более «качественных», верифицированных клиентов.

Несмотря на то, что мы рассказываем об опыте нашего банка, информация может быть полезна не только финансовым организациям. Правительство рекомендует использовать платформу ЕСИА и для других видов онлайн-услуг (подробнее тут).

Что делать и как?

Сначала нам показалось, что в интеграции с ЕСИА нет ничего особенного с технической точки зрения — стандартная задача, связанная с получением данных посредством REST API. Однако, при ближайшем рассмотрении стало понятно, что не всё так просто. Например, выяснилось, что у нас нет представления о том, как работать с сертификатами, необходимыми для подписи нескольких параметров. Пришлось тратить время и разбираться. Но обо всем по порядку.

Для начала важно было наметить план действий. Наш план включал следующие основные шаги:

  1. зарегистрироваться на технологическом портале ЕСИА;
  2. подать заявки на использование программных интерфейсов ЕСИА в тестовой и промышленной среде;
  3. самостоятельно разработать механизм взаимодействия с ЕСИА (в соответствии с действующим документом «Методические рекомендации по использованию ЕСИА»);
  4. протестировать работу механизма в тестовой и промышленной среде ЕСИА.

Обычно мы разрабатываем наши проекты на Java. Поэтому для программной реализации выбрали:

  • IntelliJ IDEA;
  • КриптоПро JCP (или КриптоПро Java CSP);
  • Java 8;
  • Apache HttpClient;
  • Lombok;
  • FasterXML/Jackson.

Получение URL для переадресации

Первый шаг ― это получение авторизационного кода. В нашем случае это делает отдельный сервис с переадресацией на страницу авторизации портала Госуслуг (расскажем об этом немного подробнее).

Сначала мы инициализируем переменные ESIA_AUTH_URL (адрес ЕСИА) и API_URL (адрес, на который происходит редирект в случае успешной авторизации). После этого создаем объект EsiaRequestParams, который содержит в своих полях параметры запроса к ЕСИА, и сформируем ссылку esiaAuthUri.

public Response loginByEsia() throws Exception {
  final String ESIA_AUTH_URL = dao.getEsiaAuthUrl(); // Адрес ЕСИА
  final String API_URL = dao.getApiUrl(); // Адрес, на который произойдет редирект с случае успешной авторизации
  EsiaRequestParams requestDto = new EsiaRequestParams(API_URL);
  URI esiaAuthUri = new URIBuilder(ESIA_AUTH_URL)
          .addParameters(Arrays.asList(
            new BasicNameValuePair(RequestEnum.CLIENT_ID.getParam(), requestDto.getClientId()),
            new BasicNameValuePair(RequestEnum.SCOPE.getParam(), requestDto.getScope()),
            new BasicNameValuePair(RequestEnum.RESPONSE_TYPE.getParam(), requestDto.getResponseType()),
            new BasicNameValuePair(RequestEnum.STATE.getParam(), requestDto.getState()),
            new BasicNameValuePair(RequestEnum.TIMESTAMP.getParam(), requestDto.getTimestamp()),
            new BasicNameValuePair(RequestEnum.ACCESS_TYPE.getParam(), requestDto.getAccessType()),
            new BasicNameValuePair(RequestEnum.REDIRECT_URI.getParam(), requestDto.getRedirectUri()),
            new BasicNameValuePair(RequestEnum.CLIENT_SECRET.getParam(), requestDto.getClientSecret())
          ))
          .build();
  return Response.temporaryRedirect(esiaAuthUri).build();
}

Для наглядности покажем, как может выглядеть класс EsiaRequestParams:

public class EsiaRequestParams {

  String clientId;
  String scope;
  String responseType;
  String state;
  String timestamp;
  String accessType;
  String redirectUri;
  String clientSecret;
  String code;
  String error;
  String grantType;
  String tokenType;

  public EsiaRequestParams(String apiUrl) throws Exception {
    this.clientId = CLIENT_ID;
    this.scope = Arrays.stream(ScopeEnum.values())
            .map(ScopeEnum::getName)
            .collect(Collectors.joining(" "));
    responseType = RESPONSE_TYPE;
    state = EsiaUtil.getState();
    timestamp = EsiaUtil.getUrlTimestamp();
    accessType = ACCESS_TYPE;
    redirectUri = apiUrl + RESOURCE_URL + "/" + AUTH_REQUEST_ESIA;
    clientSecret = EsiaUtil.generateClientSecret(String.join("", scope, timestamp, clientId, state));
    grantType = GRANT_TYPE;
    tokenType = TOKEN_TYPE;
  }
}

Каждый запрос к ЕСИА имеет параметр client_secret, который представляет собой откреплённую электронную подпись в формате PKCS7 (Public Key Cryptography Standard). В нашем случае для подписи используется сертификат, который был получен удостоверяющим центром перед началом работ по интеграции с ЕСИА. Как работать с хранилищем ключей хорошо описано в этом цикле статей.

Для примера покажем, как выглядит хранилище ключей, предоставляемое компанией КриптоПро:

Идентификацию использовав есиа

Вызов приватного и публичного ключей в этом случае будет выглядеть так:

KeyStore keyStore = KeyStore.getInstance("HDImageStore"); // Создание экземпляра хранилища
keyStore.load(null, null);
PrivateKey privateKey = (PrivateKey) keyStore.getKey(esiaKeyStoreParams.getName(), esiaKeyStoreParams.getValue().toCharArray()); // Получение приватного ключа
X509Certificate certificate = (X509Certificate) keyStore.getCertificate(esiaKeyStoreParams.getName()); // Получение сертификата, он же – открытый ключ.

Где JCP.HD_STORE_NAME ― имя хранилища в КриптоПро, esiaKeyStoreParams.getName() ― имя контейнера и esiaKeyStoreParams.getValue().toCharArray() ― пароль контейнера.
В нашем случае не нужно загружать данные в хранилище методом load(), так как ключи уже будут там при указании имени этого хранилища.

Здесь важно помнить, что получения подписи в виде

final Signature signature = Signature.getInstance(SIGN_ALGORITHM, PROVIDER_NAME);
signature.initSign(privateKey);
signature.update(data);
final byte[] sign = signature.sign();

нам недостаточно, так как ЕСИА требует откреплённую подпись формата PKCS7. Поэтому следует создать подпись формата PKCS7.

Пример нашего метода, возвращающего откреплённую подпись, выглядит следующим образом:

public String generateClientSecret(String rawClientSecret) throws Exception {
    if (this.localCertificate == null || this.esiaCertificate == null) throw new RuntimeException("Signature creation is unavailable");
    return CMS.cmsSign(rawClientSecret.getBytes(), localPrivateKey, localCertificate, true);
  }

Здесь мы проверяем наличие нашего открытого ключа и открытого ключа ЕСИА. Так как метод cmsSign() может содержать конфиденциальную информацию, мы не будем его раскрывать.

Укажем лишь некоторые детали:

  • rawClientSecret.getBytes() ― байтовый массив scope, timestamp, clientId и state;
  • localPrivateKey ― приватный ключ из контейнера;
  • localCertificate ― публичный ключ из контейнера;
  • true ― булево значение параметра подписи ― открепленная или нет.

Пример создания подписи можно найти в java-библиотеке КриптоПро, там стандарт PKCS7 называется CMS. А также в руководстве программиста, которое лежит вместе с исходниками скаченной версии КриптоПро.

Получение токена

Следующий шаг ― получение маркера доступа (он же токен) в обмен на авторизационный код, который был получен в качестве параметра при успешной авторизации пользователя на портале Госуслуг.

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

URI getTokenUri = new URIBuilder(ESIA_TOKEN_API_URL)
        .addParameters(Arrays.asList(
          new BasicNameValuePair(RequestEnum.CLIENT_ID.getParam(), requestDto.getClientId()),
          new BasicNameValuePair(RequestEnum.CODE.getParam(), code),
          new BasicNameValuePair(RequestEnum.GRANT_TYPE.getParam(), requestDto.getGrantType()),
          new BasicNameValuePair(RequestEnum.CLIENT_SECRET.getParam(), requestDto.getClientSecret()),
          new BasicNameValuePair(RequestEnum.STATE.getParam(), requestDto.getState()),
          new BasicNameValuePair(RequestEnum.REDIRECT_URI.getParam(), requestDto.getRedirectUri()),
          new BasicNameValuePair(RequestEnum.SCOPE.getParam(), requestDto.getScope()),
          new BasicNameValuePair(RequestEnum.TIMESTAMP.getParam(), requestDto.getTimestamp()),
          new BasicNameValuePair(RequestEnum.TOKEN_TYPE.getParam(), requestDto.getTokenType())
        ))
        .build();
HttpUriRequest getTokenPostRequest = RequestBuilder.post()
        .setUri(getTokenUri)
        .setHeader(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded")
        .build();

Получив ответ, распарсим его и получим токен:

try (CloseableHttpResponse response = httpClient.execute(getTokenPostRequest)) {
  HttpEntity tokenEntity = response.getEntity();
  String tokenEntityString = EntityUtils.toString(tokenEntity);
  tokenResponseDto = extractEsiaGetResponseTokenDto(tokenEntityString);
}

Токен представляет собой строку, состоящую из трёх частей и разделённых точками: HEADER.PAYLOAD.SIGNATURE, где:

  • HEADER ― это заголовок, имеющий в себе свойства токена, в том числе алгоритм подписи;
  • PAYLOAD ― это информация о токене и субъекте, которую запрашиваем у Госуслуг;
  • Signature ― это подпись HEADER.PAYLOAD.
Читайте также:  Голосов Владимир Николаевич (ИНН 760313174838)

Валидация токена

public static boolean isEsiaSignatureValid(String data, String dataSignature) throws Exception {
  InputStream inputStream = EsiaUtil.class.getClassLoader().getResourceAsStream(CERTIFICATE); // Публичный ключ ЕСИА, представленный как поток
  CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); // Создание объекта фабрики с указанием стандарта открытого ключа X.509
  X509Certificate certificate = (X509Certificate) certFactory.generateCertificate(inputStream);
  Signature signature = Signature.getInstance(certificate.getSigAlgName(), new JCP()); // Создание экземпляра класса Signature с указанием алгоритма подписи и провайдера JCP от КриптоПро
  signature.initVerify(certificate.getPublicKey()); // Инициализация открытого ключа для верификации
  signature.update(data.getBytes()); // Загрузка байтового массива строки, которую нужно верифицировать 
  return signature.verify(Base64.getUrlDecoder().decode(dataSignature));
}

В соответствии с методическими указаниями необходимо проверять срок действия маркера. Если срок действия истек, то нужно создать новую ссылку с дополнительными параметрами и сделать запрос с помощью http-клиента:

URI refreshTokenUri = new URIBuilder(ESIA_TOKEN_API_URL)
        .addParameters(Arrays.asList(
                new BasicNameValuePair(RequestEnum.CLIENT_ID.getParam(), requestDto.getClientId()),
                new BasicNameValuePair(RequestEnum.REFRESH_TOKEN.getParam(), tokenResponseDto.getRefreshToken()),
                new BasicNameValuePair(RequestEnum.CODE.getParam(), code),
                new BasicNameValuePair(RequestEnum.GRANT_TYPE.getParam(), EsiaConstants.REFRESH_GRANT_TYPE),
                new BasicNameValuePair(RequestEnum.STATE.getParam(), requestDto.getState()),
                new BasicNameValuePair(RequestEnum.SCOPE.getParam(), requestDto.getScope()),
                new BasicNameValuePair(RequestEnum.TIMESTAMP.getParam(), requestDto.getTimestamp()),
                new BasicNameValuePair(RequestEnum.TOKEN_TYPE.getParam(), requestDto.getTokenType()),
                new BasicNameValuePair(RequestEnum.CLIENT_SECRET.getParam(), requestDto.getClientSecret()),
                new BasicNameValuePair(RequestEnum.REDIRECT_URI.getParam(), requestDto.getRedirectUri())
        ))
        .build();

Получение данных пользователя

В нашем случае необходимо получить ФИО, дату рождения, паспортные данные и контакты.
Используем функциональный интерфейс, который поможет получать данные пользователя:

Function<String, String> esiaPersonDataFetcher = (fetchingUri) -> {
  try {
    URI getDataUri = new URIBuilder(fetchingUri).build();
    HttpGet dataHttpGet = new HttpGet(getDataUri);
       dataHttpGet.addHeader("Authorization", requestDto.getTokenType() + " " + tokenResponseDto.getAccessToken());
    try (CloseableHttpResponse dataResponse = httpClient.execute(dataHttpGet)) {
      HttpEntity dataEntity = dataResponse.getEntity();
      return EntityUtils.toString(dataEntity);
    }
  } catch (Exception e) {
    throw new UndeclaredThrowableException(e);
  }
};

Получение данных пользователя:

String personDataEntityString = esiaPersonDataFetcher.apply(ESIA_REST_API_URL + "/prns/" + esiaAccountId);

Получение контактов выглядит уже не таким очевидным, как получение данных пользователя. Для начала следует получить список ссылок на контакты:

String contactsListEntityString = esiaPersonDataFetcher.apply(ESIA_REST_API_URL + "/prns/" + esiaAccountId + "/ctts");
EsiaListDto esiaListDto = objectMapper.readValue(contactsListEntityString, EsiaListDto.class);

Десериализуем этот список и получим объект esiaListDto. Поля из методички ЕСИА могут различаться, поэтому стоит проверить опытным путем.

Далее необходимо перейти по каждой ссылке из списка, чтобы получить каждый контакт пользователя. Выглядеть это будет следующим образом:

for (String contactUrl : esiaListDto.getElementUrls()) {
  String contactEntityString = esiaPersonDataFetcher.apply(contactUrl);
  EsiaContactDto esiaContactDto = objectMapper.readValue(contactEntityString, EsiaContactDto.class);
}

С получением списка документов та же ситуация. Вначале получаем список ссылок на документы:

String documentsListEntityString = esiaPersonDataFetcher.apply(ESIA_REST_API_URL + "/prns/" + esiaAccountId + "/docs");

Затем десериализуем его:

EsiaListDto esiaDocumentsListDto = objectMapper.readValue(documentsListEntityString, EsiaListDto.class);
Переходим по каждой ссылке и получаем документы:
for (String documentUrl : esiaDocumentsListDto.getElementUrls()) {
  String documentEntityString = esiaPersonDataFetcher.apply(documentUrl);
  EsiaDocumentDto esiaDocumentDto = objectMapper.readValue(documentEntityString, EsiaDocumentDto.class);
}

Что теперь делать со всеми этими данными?

Мы можем сделать парсинг данных и получать объекты с требуемыми полями. Здесь каждый разработчик может оформлять классы как ему необходимо, в соответствии с техническим заданием.

Пример получения объекта с необходимыми полями:

final ObjectMapper objectMapper = new ObjectMapper()
	.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

String personDataEntityString = esiaPersonDataFetcher
	.apply(ESIA_REST_API_URL + "/prns/" + esiaAccountId);

EsiaPersonDto esiaPersonDto = objectMapper
	.readValue(personDataEntityString, EsiaPersonDto.class);

Заполняем объект esiaPersonDto необходимыми данными, например, контактами:

for (String contactUrl : esiaListDto.getElementUrls()) {
  String contactEntityString = esiaPersonDataFetcher.apply(contactUrl);
  EsiaContactDto esiaContactDto = objectMapper.readValue(contactEntityString, EsiaContactDto.class); // Десериализация контакта
  if (esiaContactDto.getType() == null) continue;
  switch (esiaContactDto.getType().toUpperCase()) {
    case EsiaContactDto.MBT: // Если это номер мобильного телефона, то заполним поле mobilePhone
      esiaPersonDto.setMobilePhone(esiaContactDto.getValue());
      break;
    case EsiaContactDto.EML: // Если это адрес электронной почты, то заполним поле email
      esiaPersonDto.setEmail(esiaContactDto.getValue());
  }
}

Класс EsiaPersonDto выглядит следующим образом:

@Data
@FieldNameConstants(prefix = "")
public class EsiaPersonDto {

  private String firstName;
  private String lastName;
  private String middleName;
  private String birthDate;
  private String birthPlace;
  private Boolean trusted;  // тип учетной записи - подтверждена (“true”) / не подтверждена (“false”)
  private String status;    // статус УЗ - Registered (зарегистрирована) /Deleted (удалена)
  // Назначение полей непонятно, но они есть при запросе /prns/{oid}
  private List<String> stateFacts;
  private String citizenship;
  private Long updatedOn;
  private Boolean verifying;
  @JsonProperty("rIdDoc")
  private Integer documentId;
  private Boolean containsUpCfmCode;
  @JsonProperty("eTag")
  private String tag;
  // ----------------------------------------
  private String mobilePhone;
  private String email;

  @javax.validation.constraints.Pattern(regexp = "(\\d{2})\\s(\\d{2})")
  private String docSerial;

  @javax.validation.constraints.Pattern(regexp = "(\\d{6})")
  private String docNumber;

  private String docIssueDate;

  @javax.validation.constraints.Pattern(regexp = "([0-9]{3})\\-([0-9]{3})")
  private String docDepartmentCode;

  private String docDepartment;

  @javax.validation.constraints.Pattern(regexp = "\\d{14}")
  @JsonProperty("snils")
  private String pensionFundCertificateNumber;

  @javax.validation.constraints.Pattern(regexp = "\\d{12}")
  @JsonProperty("inn")
  private String taxPayerNumber;

  @JsonIgnore
  @javax.validation.constraints.Pattern(regexp = "\\d{2}")
  private String taxPayerCertificateSeries;

  @JsonIgnore
  @javax.validation.constraints.Pattern(regexp = "\\d{10}")
  private String taxPayerCertificateNumber;
}

Работа по усовершенствованию сервиса будет продолжаться, ведь ЕСИА не стоит на месте.

Cetera выполняет интеграцию с ЕСИА только в составе комплексных проектов по созданию, поддержке и развитию личных кабинетов.

Принципы работы пользовательской идентификации

Чтобы получить доступ к полному пакету услуг после прохождения регистрации, нужно пройти идентификацию. Новые пользователи чаще всего не знают, что такое авторизация и как ее пройти через ЕСИА на сайте. ЕСИА – это единственный возможный способ повысить уровень созданной учетной записи. В ситуации, когда частное или юридическое лицо работает с важными документами, денежными оборотами, без использования ЕСИА обойтись невозможно. Чтобы пройти успешную интеграцию, важно выполнить несколько моментов.

Первоначально предполагалось, что ЕСИА будет использоваться исключительно для идентификации и авторизации на портале Госуслуги. Система появилась в 2010-ом году. Система постоянно развивалась, и ее стали использовать коммерческие организации, чтобы связать учетные записи с личностью в офлайн режиме.

Как авторизоваться на площадке

Новым пользователям нужно предварительно пройти регистрацию, выполняя несколько шагов:

• перейти на официальный сайт Госуслуг и нажать на кнопку «регистрация»;

• в стандартной форме необходимо указать данные: ФИО, номер телефона, адрес электронной почты, адрес; далее подтвердить ввод данных;

• указать в соответствующем поле код подтверждения, отправленный на номер мобильного.

Чтобы у начинающих пользователей не возникало вопросов, стоит подробно разобрать данный вопрос.

Вход в личный кабинет для частных лиц

После прохождения регистрации пользователю становится доступно посещение государственных и частных учреждений: налоговой инспекции, ПФР, ГИС, ЖКХ.

Вход с использованием номера телефона

Авторизоваться в системе можно через стандартный веб-ресурс или посредством мобильного приложения. Для этого необходимо в специальную форму для входа вписать номер телефона и созданный пароль.

Авторизация через СНИЛС

Альтернативный способ авторизации через Госуслуги. Номер СНИЛС состоит из 11 цифр. Пароль остается идентичным, как и в случае со входом по номеру телефона. При этом разницы, каким образом авторизоваться на портале, не существует. При использовании СНИЛС встречаются следующие трудности:

• при регистрации была допущена ошибка в номере;

• СНИЛС не действителен;

• если была смена фамилии, а СНИЛС не был изменен.

Если данные аспекты отсутствуют, то СНИЛС возможно использовать для авторизации.

С использованием ЭЦП

Является наиболее безопасным способом при авторизации. Данный вариант могут использовать не только физические, но и юридические лица. Подпись значительно упрощает процесс работы на портале Госуслуг. Но предварительно нужно создать электронную цифровую подпись и установить специальное программное обеспечение, чтобы распознавался ключ.

Чтобы авторизоваться в системе этим методом, рекомендуется выполнить следующие действия:

• среди имеющегося списка выбрать ЭЦП;

• система автоматически запросит диск, карту или флешку, либо другой носитель, на котором должна быть записана информация о ключе;

• как только идентификация пройдена, пользователю будут доступны функциональные возможности кабинета.

Какие функциональные возможности дает идентификация

Авторизация через Госуслуги дает возможность использования личного кабинета. В зависимости от того, была ли пройдена идентификация, предлагается набор функциональных возможностей. При прохождении полной процедуры пользователи могут:

• подписывать документы в электронном формате, иметь доступ к конфиденциальным и медицинским данным;

• заполнять анкеты и заявления с автоматическим проставлением персональных данных: ФИО, сведения из паспорта, ИНН, информация о детях. При этом нет необходимости каждый раз проверять достоверность указанных данных;

• будет полезен личный кабинет не только для частных пользователей, но и для юридических лиц;

• для частных пользователей идентификация является гарантом хранения данных в конфиденциальном порядке. Также не потребуется запоминать пароли.

Какие существуют виды учетной записи

Когда пользователь регистрируется на портале Госуслуг, появляется личный кабинет, где можно оплачивать судебные задолженности и штрафы, получать справки в электронном формате, что позволяет избежать очередей в МФЦ. Уровень учетной записи зависит от того, какое количество информации будет указано в анкете. Чем подробнее будет заполнена анкета, тем больше функциональных возможностей будет предоставлено:

Читайте также:  Губернатору краснодарского края в и кондратьеву

• при прохождении формальной регистрации, где необходимо указать ФИО, мобильный номер телефона и адрес электронной почты, учетной записи будет присвоен статус Упрощенной;

• стандартная учетная запись присваивается при указании в личном кабинете паспортных данных и СНИЛС;

• подтвержденная запись имеет наиболее высокий статус. Для этого идентификацию можно пройти через онлайн-банк Сбербанка, ТКС, Альфа-Банка или ВТБ, либо лично посетить отделение МФЦ.

Восстановление пароля

Нередко пользователь сталкивается с ситуацией, когда пароль от личного кабинета может быть утерян. Восстановление данных – это довольно простая процедура. Под формой входа на главной странице есть функция «забыли пароль». Системой автоматически будет предложено несколько вариантов: с использованием мобильного номера телефона, посредством ввода данных из паспорта, СНИЛС, ИНН.

После того, как информация будет указана, пользователю, зарегистрированному в системе, будет направлено смс сообщение с одноразовым паролем для входа. Далее нужно перейти в настройки и задать новую комбинацию для входа. В среднем, процедура занимает 15-20 минут и не предполагает каких-либо сложностей.

Какие возможности приобретают зарегистрированные пользователи

Сервис Госуслуги дает широкие функциональные возможности:

• поставить бронь на роспись в ЗАГСе, запросить копию свидетельства о рождении;

• отправить заявку на оформление нового загранпаспорта;

• поставить транспортное средство на учет;

• получить справку о несудимости;

• поставить ребенка на очередь в детский сад;

• оплачивать услуги ЖКХ;

• запрашивать выписки из налоговой, ПФР.

Большинство услуг возможно получить в дистанционном режиме, не выходя из дома.

В чем преимущества подтвержденной учетной записи

Если пользователь планирует использовать все функции, которые предоставляет портал Госуслуг, то прохождение идентификации является обязательным условием. Граждане с анонимной учетной записью не могут воспользоваться никакими функциями. Только при предоставлении полного пакета документов возможно прохождение идентификации.

За счет прохождения регистрации больше не нужно стоять в очередях, чтобы оплатить пошлину или штрафы. Еще одно важное преимущество – это получение привлекательных скидок при оплате через ресурс. Пенсионеры могут самостоятельно контролировать поступления, проверять начисления, а также узнавать о самых последних нововведениях, принятых в государственных проектах.

Авторизация на сайте через Госуслуги

Cetera выполняет интеграцию с ЕСИА только в составе комплексных проектов по созданию, поддержке и развитию личных кабинетов.

Что дает регистрация

ЕСИА – это информационный портал, работающий на территории Российской Федерации. Главным руководством, которое отслеживает функционирование системы, является Минкомсвязи, обеспечивающий доступ россиянам к информации из государственных реестров.

Система похожа на электронный паспорт каждого гражданина, где содержится полная информация о документах. С помощью ЕСИА можно пройти быструю регистрацию в нужном ведомстве (ФНС, портале Госуслуг, ПФР и так далее). Но предварительно придется пройти регистрацию.

Основное предназначение портала

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

• сделать замену российского или загранпаспорта;

• получить информацию о начисленных штрафах, налоговых и судебных задолженностях;

• проверить состояние пенсионного счета;

• оформить первый загранпаспорт.

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

Небольшая справка о развитии сервиса

Расшифровка сервиса позволяет ознакомиться с основным предназначением – Единая система идентификации и аутентификации.

Формирование электронного сервиса происходило в несколько этапов:

• в 2010-ом году появился сервис, помогающий оперативно авторизоваться на портале Госуслуг;

• в 2011-ом году произошло расширение функциональных возможностей за счет подключения дополнительных государственных ресурсов. Теперь создать учетную запись могут не только частные лица, но и ИП и юридические лица;

• согласно Правительственному распоряжению от 2014-ого года была одобрена интеграция системы в другие государственные сервисы муниципального и регионального значения, что позволило создать единую информационную сеть по всей территории страны.

В будущем планируется дальнейшее развитие доступного функционала.

Какие функции исполняет

ЕСИА – это функциональная система, позволяющая выполнять следующие действия:

• прохождение участниками идентификации и аутентификации;

• оформление и создание цифровой подписи для участников;

• своевременное информирование граждан о состоянии счета в Пенсионном фонде Российской Федерации;

• возможность оформлять записи в государственные инстанции, вставать в очередь в детский сад;

• формирование запросов заявлений на предоставление российского гражданства;

• прохождение авторизации через информационный канал ЕСИА исполнительными и ответственными государственными органами.

В личном кабинете пользователь может корректировать указанную информацию, использованную для идентификации.

Какие задачи решает

Информационная система была создана для решения следующих задач:

• создание для пользователей единой учетной записи, которую возможно использовать в большинстве государственных ведомств и информационных системах, разработанных для госучреждений;

• идентификация и аутентификация должностных граждан и представителей исполнительной власти, а также контактов межведомственных организаций;

• предоставление различным группам населения (частным лицам, ИП, юридическим лицам) возможности использовать информационные порталы, государственные, региональные и муниципальные базы;

• предоставление выделенного доступа государственным служащим к информационным базам.

Кроме того, систему ЕСИА используют различные информационные сервисы за счет применения единого порядка идентификации и аутентификации.

Контакты информационных систем и ЕСИА осуществляются посредством сообщений в электронном формате. Техническая разработка проходит посредством стандартов SAML 2.0 и OpenID Connect 1.0.

В каком порядке осуществляется регистрация

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

• открыть официальный сайт информационного сервиса идентификации и аутентификации;

• заполнить стандартную информацию: ФИО, контактные данные (номер телефона, адрес электронной почты);

• при указании мобильного номера телефона, приходит смс сообщение с кодом для подтверждения введенной информации. Остается нажать кнопку для подтверждения действий;

• при указании электронного адреса, на ящик отправляется автоматическое письмо с ссылкой для подтверждения. Кликнуть на гиперссылку для перехода по адресу;

• остается придумать надежный пароль для входа в личный кабинет. Минимальная длина – 8 символов. Также необходимо использовать знаки из списка разрешенных, прописные и заглавные буквы, цифры.

При получении упрощенного аккаунта пользователь имеет доступ к ограниченному количеству услуг. Поэтому рекомендуется первоначально завести стандартную учетную запись. В таком случае потребуется выполнить следующий порядок действий:

• авторизоваться в личном кабинете;

• перейти в информационный раздел с персональными данными;

• кликнуть по кнопке заполнения профиля;

• указать персональную информацию и кликнуть «сохранить»;

• подождать, пока произойдет автоматическая проверка указанных данных в базе ПФ. Проверяются паспортные данные, СНИЛС, указанный возраст и пол. ФМС подтверждает правильность заполненных реквизитов.

Если пользователь указал все данные верно, то автоматически открывается доступ к расширенным функциям. Чтобы иметь полное представление о том, что предполагает учетная запись ЕСИА на Госуслугах, нужно обзавестись подтвержденным аккаунтом.

Подтверждение аккаунта возможно выполнить следующими способами:

• при личном посещении любого отделения МФЦ;

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

• применение ЭЦП.

Чтобы узнать учетную запись, для начала потребуется пройти авторизацию в личном кабинете, открыть раздел персональных данных и кликнуть на кнопку подтверждения. Далее выбрать соответствующий способ подтверждения и нажать на кнопку Готово.

Прохождение аутентификации

Прохождение процедуры происходит следующим образом:

• пользователь направляет запрос на сервис государственного ведомства;

• отправляется запрос на ESIA аутентификацию;

• инициатора обращения проверяют на достоверность указанных данных и на наличие открытой сессии. В случае ее отсутствия, процедура осуществляется посредством автоматического перехода на соответствующую страницу;

• если предыдущий шаг прошел успешно, то ЕСИА автоматически начинает определять идентификационные значения участника.

На основании полученной информации, пользователю предоставляется доступ к защищенным данным.

Какую информацию хранит информационный сервис

Не менее важным является то, какая информация хранится на информационном портале:

• данные российского паспорта;

Как защищены персональные данные

Информация, которая передается в процессе регистрации аккаунта, отправляется на хранение в государственные сервисы. Приоритетом является обеспечение безопасности персональных данных. Поэтому важно продумать высокий уровень надежности пароля. Информация передается только по защищенным каналам связи со встроенными стандартами K1. Доступ к личным данным имеет только владелец личного кабинета.

Использование ЕСИА для идентификации и аутентификации

Оцените статью