В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT pos gosuslugi

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

Быстрый способ получить данные об организациях пользователя при авторизации через Госуслуги

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

В рамках одного из проектов команда PHP-разработки DD Planet столкнулась со сложностью в процессе интеграции с ЕСИА. Была необходимость получать данные по юридическим организациям, которые числятся за пользователем, в документации Госуслуг не было достоверного описания, и нам удалось найти неочевидное решение этой задачи.

Введение

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

В статье часто будет использоваться фраза «формировать запрос» — под ней мы понимаем формирование URL, по которому необходимо переадресовать пользователя. В этом URL зашифрованы все данные для ЕСИА, по которым она определяет, что это за запрос. 

Также много внимания уделим составу scope
. Scope — это область доступа, т. е. запрашиваемые права. Подробнее о формировании запросов можно прочесть в документации
в пунктах B.2.1, B.2.2, B.2.3, B.2.4.

Задача и поиск решения

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

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

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

Изначально мы пытались получить данные по пользователю и его организациям в одном запросе, указав все поля в scope, но это не работало. Как же получить данные по организациям? 

Значит ли это, что на получение данных об организации нужно формировать отдельный запрос? Короткий ответ: да.

Описание решения

В документации в разделе B.3.2 и B.4 указаны параметры, которые необходимо запрашивать для получения информации о пользователе и организациях, среди них есть usr_org
(список организаций пользователя).

Делаем запрос на авторизацию пользователя, запросив следующие поля:

   $scope = ['openid', 'fullname', 'inn', 'email', 'usr_org'];
$scope = implode(', ', $scope);  
  

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

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

   $scope = [
	'openid', 
	'http://esia.gosuslugi.ru/org_inn?org_oid=' . $oid, 
	'http://esia.gosuslugi.ru/org_shortname?org_oid=' . $oid, 
	'http://esia.gosuslugi.ru/org_fullname?org_oid=' . $oid
];
$scope = implode(', ', $scope);  
  

Где $oid
— это уникальный ID организации в ЕСИА.

При таком запросе мы получаем ИНН организации, короткое название и полное название.

В одном запросе можно получить данные только об одной организации. Это значит, что нельзя передать в scope
параметры с разными oid, это должен быть один oid
для всех параметров организации.

Схема работы будет такая:

Шаг 1.
Пользователь нажимает кнопку «Авторизоваться через госуслуги».

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

Шаг 3.
Пользователь вводит свои данные.

Шаг 5.
Мы смотрим, есть ли данные в usr_org
. Если да, то формируем следующий запрос на получение каждой организации отдельно. Если у пользователя 10 организаций, то будет 10 разных запросов к ЕСИА. Теперь наш scope выглядит так:

   $scope = [ 
	'openid', 
	'http://esia.gosuslugi.ru/org_inn?org_oid=' . $oid, 
	'http://esia.gosuslugi.ru/org_shortname?org_oid=' . $oid,
	'http://esia.gosuslugi.ru/org_fullname?org_oid=' . $oid
];
$scope = implode(', ', $scope);  
  

Где $oid
— это уникальный ID организации в ЕСИА (массив с этими параметрами пришел нам в usr_org
с данными пользователя). Сформировав запрос, мы редиректим пользователя на другую страницу Госуслуг (каждый URL страницы Госуслуг формируется исходя из передаваемых данных, подробнее можно увидеть в документации).

Для пользователя этот переход выглядит так:

  • он видит страницу авторизации на Госуслугах, вводит свои данные;

  • затем его перекидывает на страницу Госуслуг, на которой задается вопрос «Вы уверены, что хотите предоставить сервису данные о своей организации?». Этот вопрос задается столько раз, сколько организаций есть у пользователя.

Шаг 6.
На каждый вопрос «Вы уверены, что хотите предоставить сервису данные о своей организации?» пользователь должен нажать «Да», после чего ЕСИА передаёт на наш сервис информацию по запрошенной организации, а мы сохраняем ее.

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

Итог

Мы реализовали сохранение данных по организациям через работу в сессиями. При получении данных о пользователе после его авторизации через Госуслуги сохраняем в переменную сессии, возвращенные ID организаций, и при получении данных по каждой из них удаляем ID полученной организации из массива, сохраненного в сессию. И только после того, как этот массив станет пустым (что означает, что мы получили все данные по всем организациям), перенаправляем пользователя на страницу его личного кабинета. А сами детальные данные по каждой организации сохраняем в базу данных.

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

smev3 link

smev


manual

Описание бизнес-процесса взаимодействия
:

ИС организации хочет найти учетную запись в ЕСИА.

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

Читайте также:  Выйти на пенсию стало проще: ознакомьтесь с Пенсионным фондом «Магаданс» Financial Solutions

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

Если отправка запроса не произошла, то Агредатор получит от СМЭВ сообщение об ошибке и передаст его в ИС организации.

Переменные окружения

Переменные для конфигурирования подключения к БД:

Переменные для конфигурирования отправки метрик в Elasticsearch:

ELASTIC_HOST, ELASTIC_PORT, ELASTIC_METRIC_PREFIX

Справочник кодов ЕСИА сред

Принимаемые параметры

Необходимо, чтобы был заполнен хотя бы 1 из необязательных элементов запроса: email, mobile, snils. Для наиболее эффективного поиска учётной записи рекомендуется указывать максимально возможное количество входных параметров.

Структура элемента Doc

Документ, удостоверяющий личность пользователя

Типы документов, удостоверящих личность

Параметры ответа

Сервис возвращает последовательность элементов о состоянии регистрации образцов, указанных в запросе.

accounts – список найденных учетных записей

errors – список ошибок

Структура элемента account

Информация о найденном аккаунте пользователя

Структура элемента error

Детальная информация об ошибке

Примеры

Для проверки настройки сервиса можно отправить в консоли отправки панели администрирования следующий запрос:

   
   
   
   
   
   
   
   
     
     
     
     
  
   
   

  
  

В случае корректной настройки должен прийти следующий ответ:

    
    
       
    
    
    
    
       
    
    
       
    
    
       
    
    
    
    
    
    
    
    
    
    
       
    
    
       
    
    
       
    
    
    
    
    
    
    
    

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

Привет, Хабр! В одном из постов блога мой коллега Иван писал

о нашем блокчейн-сервисе для онлайн-голосований WE. Vote. Он подробно разобрал, как работает WE. Vote с точки зрения технологий. Но чтобы сервисы удаленного голосования можно было использовать для принятия официальных решений юрлиц, не хватает еще одного важного компонента — достоверной верификации участников. В России для этого можно провести интеграцию с ЕСИА (Единой Системой Идентификации и Аутентификации) — проще говоря, с Госуслугами. Интеграция эта заметно отличается от интеграции с другими OAuth2-сервисами, как, например, Google или VK. В этом посте мы постараемся помочь тем, кто захочет интегрировать ЕСИА в свой сервис через стек, подобный нашему, а также дадим несколько полезных ссылок по ЕСИА в принципе.

В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

Зачем нам ЕСИА?

Согласно Федеральному закону № 225-ФЗ

от 28.06.2021 «О внесении изменений в часть первую Гражданского кодекса Российской Федерации», многие организаций в РФ получили право проводить официальные собрания и голосования по корпоративным вопросам дистанционно.

Ранее решения с юридической силой требовали очных собраний или голосований по почте. Голосования по почте не отличаются надежностью, а собрать много руководителей со всей России в одном месте — это кошмар с точки зрения затрат.

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

Стек и схема интеграции

Для интеграции мы используем:

  • Typescript, ReactJS, NestJS

  • КриптоПро CSP 4

Схема интеграции
Схема интеграции

Формирование подписи

Прежде чем разбирать все по порядку, кое о чем стоит подумать заранее. В отличие от других интеграций, запросы к ЕСИА должны сопровождаться подписью ГОСТ Р 34.10/11-2012, а не просто API key. Создать такую подпись можно с помощью утилиты КриптоПро CSP

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

. Инструкция по запуску есть в README.md.

В процесс сборки Docker образа сервиса с утилитой КриптоПро мы встроили:

  • Установку утилиты КриптоПро СSP 4 из .deb пакета

  • Установку лицензии КриптоПро

  • Загрузку корневого сертификата тестовой или основной среды ЕСИА

  • Загрузку пользовательского сертификата с PIN кодом

  • REST-сервер с методом, позволяющим создавать подписи

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

   private async signParams(params: Record<string, string>) {
 const time = moment().format('YYYY.MM.DD HH:mm:ss ZZ')
 const state = uuid()
 const clientId = this.clientId
 const scope = this.scope

 const { data: { result: clientSecret } } = await axios.post<{ result: string }>(
   `${this.cryptoProServiceAddress}/cryptopro/sign`,
   { text: [scope, time, clientId, state].join('') },
 )

 return {
   ...params,
   timestamp: time,
   client_id: clientId,
   scope,
   state,
   client_secret: clientSecret.replace(/\n/g, ''),
 }
}  
  

С созданием подписей разобрались, теперь последовательно разберем, как реализовать схему выше.

Создание ссылки для редиректа на страницу ЕСИА

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

   async getAuthLink(redirectLink: string) {
 const params = await this.signParams({
   redirect_uri: redirectLink,
   response_type: 'code',
   access_type: 'offline',
 })
 const authQuery = new URLSearchParams(params)
 const authURL = `${this.esiaHost}/aas/oauth2/ac`
 return `${authURL}?${authQuery}`
}  
  

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

Получение авторизационного токена ЕСИА

Запрос токена идентификации

После успешной аутентификации на странице ЕСИА пользователь возвращается на фронтенд приложения по указанному нами адресу. Е СИА передаёт авторизационный токен в виде get-параметра code
. Этот токен необходимо передать на бэкенд и запросить с его помощью идентификационный токен пользователя.

   async getTokens(code: string) {
 try {
   const params = await this.signParams({
     grant_type: 'authorization_code',
     token_type: 'Bearer',
     redirect_uri: 'no',
     code,
   })
   const authURL = `${this.host}/aas/oauth2/te`
   const authQuery = new URLSearchParams(params)
   const { data: tokens } = await axios.post(`${authURL}?${authQuery}`)
   return {
     idToken: tokens.id_token,
     accessToken: tokens.access_token,
     refreshToken: tokens.refresh_token,
   }
 } catch (e) {
   const status = e.response ? e.response.status : 500
   const message = e.response ? e.response.data.error_description : e.message
   throw new HttpException('Failed to get auth tokens: ' + message, status)
 }
}  
  

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

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

   getUserIdFromToken(idToken: string) {
 const decodedIdToken = verify(idToken, this.esiaPublicKey, {
   algorithms: ['RS256'],
   audience: 'WE_VOTE',
 }) as EsiaParsedToken
 return decodedIdToken['urn:esia:sbj']['urn:esia:sbj:oid']
}

async getUserInfo(tokens: EsiaTokens) {

 const { idToken, accessToken } = tokens
 const oId = this.getUserIdFromToken(idToken)

 const [{ data: mainInfo }, { data: contactsInfo }] = await Promise.all([
   axios.get(`${this.esiaHost}/rs/prns/${oId}`, {
     headers: {
       Authorization: `Bearer ${accessToken}`,
     },
   }),
   axios.get(`${this.esiaHost}/rs/prns/${oId}/ctts?embed=(elements)`, {
     headers: {
       Authorization: `Bearer ${accessToken}`,
     },
   }),
 ])

 const email = contactsInfo.elements.find(({ type }: { type: string }) => type === 'EML')

 return {
   id: oId,
   firstName: mainInfo.firstName,
   lastName: mainInfo.lastName,
   surName: mainInfo.middleName,
   trusted: mainInfo.trusted,
   email: email ? {
     value: email.value.toLowerCase(),
     verified: email.vrfStu === 'VERIFIED',
   } : null,
 }
}  
  

На этом шаге мы уже имеем все необходимые данные о пользователе. Остается только занести их в свою систему и закончить авторизацию.

Читайте также:  Пособия семьям с детьми будут с 1 января
Полный код интеграционного модуля на бэкенде
   import { HttpException } from '@nestjs/common'
import * as moment from 'moment'
import { v4 as uuid } from 'uuid'
import { URLSearchParams } from 'url'
import axios from 'axios'
import { verify } from 'jsonwebtoken'

type EsiaTokens = {
 idToken: string,
 accessToken: string,
}

type EsiaParsedToken = {
 'urn:esia:sbj': {
   'urn:esia:sbj:oid': string,
 },
}

export class EsiaApiService {
 private readonly clientId = 'WE_VOTE'
 private readonly scope = ['openid', 'email', 'fullname'].join(' ')

 constructor(
   private readonly esiaHost: string, // 'https://esia-portal1.test.gosuslugi.ru' или 'https://esia.gosuslugi.ru'
   private readonly esiaPublicKey: string, // можно взять из http://esia.gosuslugi.ru/public/esia.zip
   private readonly cryptoProServiceAddress: string, // адрес сервиса по созданию подписей e.g 'http://127.0.0.1:3037'
 ) {
 }

 async getAuthLink(redirectLink: string) {
   const params = await this.signParams({
     redirect_uri: redirectLink,
     response_type: 'code',
     access_type: 'offline',
   })
   const authQuery = new URLSearchParams(params)
   const authURL = `${this.esiaHost}/aas/oauth2/ac`
   return `${authURL}?${authQuery}`
 }

 private async signParams(params: Record<string, string>) {
   const time = moment().format('YYYY.MM.DD HH:mm:ss ZZ')
   const state = uuid()
   const clientId = this.clientId
   const scope = this.scope

   const { data: { result: clientSecret } } = await axios.post<{ result: string }>(
     `${this.cryptoProServiceAddress}/cryptopro/sign`,
     { text: [scope, time, clientId, state].join('') },
   )

   return {
     ...params,
     timestamp: time,
     client_id: clientId,
     scope,
     state,
     client_secret: clientSecret.replace(/\n/g, ''),
   }
 }

 async getTokens(code: string) {
   try {
     const params = await this.signParams({
       grant_type: 'authorization_code',
       token_type: 'Bearer',
       redirect_uri: 'no',
       code,
     })
     const authURL = `${this.esiaHost}/aas/oauth2/te`
     const authQuery = new URLSearchParams(params)
     const { data: tokens } = await axios.post(`${authURL}?${authQuery}`)
     return {
       idToken: tokens.id_token,
       accessToken: tokens.access_token,
       refreshToken: tokens.refresh_token,
     }
   } catch (e) {
     const status = e.response ? e.response.status : 500
     const message = e.response ? e.response.data.error_description : e.message
     throw new HttpException('Failed to get auth tokens: ' + message, status)
   }
 }

 getUserIdFromToken(idToken: string) {
   const decodedIdToken = verify(idToken, this.esiaPublicKey, {
     algorithms: ['RS256'],
     audience: this.clientId,
   }) as EsiaParsedToken
   return decodedIdToken['urn:esia:sbj']['urn:esia:sbj:oid']
 }

 async getUserInfo(tokens: EsiaTokens) {

   const { idToken, accessToken } = tokens
   const oId = this.getUserIdFromToken(idToken)

   const [{ data: mainInfo }, { data: contactsInfo }] = await Promise.all([
     axios.get(`${this.esiaHost}/rs/prns/${oId}`, {
       headers: {
         Authorization: `Bearer ${accessToken}`,
       },
     }),
     axios.get(`${this.esiaHost}/rs/prns/${oId}/ctts?embed=(elements)`, {
       headers: {
         Authorization: `Bearer ${accessToken}`,
       },
     }),
   ])

   const email = contactsInfo.elements.find(({ type }: { type: string }) => type === 'EML')

   return {
     id: oId,
     firstName: mainInfo.firstName,
     lastName: mainInfo.lastName,
     surName: mainInfo.middleName,
     trusted: mainInfo.trusted,
     email: email ? {
       value: email.value.toLowerCase(),
       verified: email.vrfStu === 'VERIFIED',
     } : null,
   }
 }

}  
  

Надеюсь, статья оказалась для вас полезной. Желаю, чтобы у вас все получилось без особых проблем! 

Полезные материалы по теме

Поиск информации об учетной записи в ЕСИА

smev3 link

smev


manual

Описание бизнес-процесса взаимодействия
:

ИС организации хочет найти информацию об учетной записи в ЕСИА.

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

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

Если отправка запроса не произошла, то Агредатор получит от СМЭВ сообщение об ошибке и передаст его в ИС организации.

Переменные окружения

Переменные для конфигурирования подключения к БД:

Переменные для конфигурирования отправки метрик в Elasticsearch:

ELASTIC_HOST, ELASTIC_PORT, ELASTIC_METRIC_PREFIX

Справочник кодов ЕСИА сред

Принимаемые параметры

Необходимо, чтобы был заполнен хотя бы 1 из необязательных элементов запроса вида сведений: email, mobile, snils, person_inn. Для наиболее эффективного поиска учётной записи рекомендуется указывать максимально возможное количество входных параметров.

Структура элемента Doc

Документ, удостоверяющий личность пользователя

Типы документов, удостоверящих личность

Параметры ответа

Сервис возвращает последовательность элементов о состоянии регистрации образцов, указанных в запросе.

accounts – список найденных учетных записей

errors – список ошибок

Структура элемента account

Информация о найденном аккаунте пользователя

Структура элемента error

Детальная информация об ошибке

Примеры

Для проверки настройки сервиса можно отправить в консоли отправки панели администрирования следующий запрос:

    
    
       
    
    
       
    
    
       
    
    
       
    
    
       
    
    
       
    
    
       
    
    
       
    
    
       
    
    
    
    
       
    
    
       
    
    
       
    
    
    
    

В случае корректной настройки должен прийти следующий ответ:

    
    
       
    
    
    
    
       
    
    
       
    
    
       
    
    
    
    
    
    
    
    
    
    
    
    
       
    
    
       
    
    
       
    
    
       
    
    
    
    
    
    
    
    

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

В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

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

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

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

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

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

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

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

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

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

  • идентификация и аутентификация пользователей, в том числе:
    • однократная аутентификация, которая дает пользователям ЕСИА следующее преимущество: пройдя процедуру идентификации и аутентификации в ЕСИА, пользователь может в течение одного сеанса работы обращаться к любым информационным системам, использующим ЕСИА, при этом повторная идентификация и аутентификация не требуется;
    • поддержка различных методов аутентификации: по паролю, по электронной подписи, а также двухфакторная аутентификация (по постоянному паролю и одноразовому паролю, высылаемому в виде sms-сообщения);
    • поддержка уровней достоверности идентификации пользователя (упрощённая учетная запись, стандартная учетная запись, подтвержденная учетная запись).
  • ведение идентификационных данных, а именно – ведение регистров физических, юридических лиц, органов и организаций, должностных лиц органов и организаций и информационных систем;
  • авторизация уполномоченных лиц органов государственной власти при доступе к следующим функциям ЕСИА:
    • ведение регистра должностных лиц органов власти в ЕСИА;
    • ведение справочника полномочий в отношении информационной системы и предоставление пользователям ЕСИА (зарегистрированным в ЕСИА как должностные лица) полномочий по доступу к ресурсам систем, зарегистрированным в ЕСИА;
    • делегирование вышеуказанных полномочий уполномоченным лицам нижестоящих органов государственной власти.
  • ведение и предоставление информации о полномочиях пользователей в отношении информационных систем, зарегистрированных в ЕСИА.
Читайте также:  ПФР РЯЗАНЬ ОФИЦИАЛЬНЫЙ САЙТ РЯЗАНЬ

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

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

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

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

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

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

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

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

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

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

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

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

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

В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

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

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

    В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

    В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

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

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

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

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

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

    В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

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

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

В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

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

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

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

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

В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

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

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

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

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

В КАКОЙ ОРГАНИЗАЦИИ МОЖНО АВТОРИЗОВАТЬСЯ ЧЕРЕЗ ЕСИА С ПОМОЩЬЮ DOCKER И TYPESCRIPT

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

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