Cetera выполняет интеграцию с ЕСИА только в составе комплексных проектов по созданию, поддержке и развитию личных кабинетов
.
- Принципы работы пользовательской идентификации
- Как авторизоваться на площадке
- Вход в личный кабинет для частных лиц
- Вход с использованием номера телефона
- Авторизация через СНИЛС
- С использованием ЭЦП
- Какие функциональные возможности дает идентификация
- Какие существуют виды учетной записи
- Восстановление пароля
- Какие возможности приобретают зарегистрированные пользователи
- В чем преимущества подтвержденной учетной записи
- Зачем нам ЕСИА?
- Стек и схема интеграции
- Формирование подписи
- Создание ссылки для редиректа на страницу ЕСИА
- Получение авторизационного токена ЕСИА
- Запрос токена идентификации
- Получение данных о пользователе
- Полезные материалы по теме
- Принципы работы пользовательской идентификации
- Как авторизоваться на площадке
- Вход в личный кабинет для частных лиц
- Вход с использованием номера телефона
- Авторизация через СНИЛС
- С использованием ЭЦП
- Какие функциональные возможности дает идентификация
- Какие существуют виды учетной записи
- Восстановление пароля
- Какие возможности приобретают зарегистрированные пользователи
- В чем преимущества подтвержденной учетной записи
- Что такое ЕСИА
Принципы работы пользовательской идентификации
Чтобы получить доступ к полному пакету услуг после прохождения регистрации, нужно пройти идентификацию. Новые пользователи чаще всего не знают, что такое авторизация и как ее пройти через ЕСИА на сайте. ЕСИА
– это единственный возможный способ повысить уровень созданной учетной записи. В ситуации, когда частное или юридическое лицо работает с важными документами, денежными оборотами, без использования ЕСИА обойтись невозможно. Чтобы пройти успешную интеграцию, важно выполнить несколько моментов.
Первоначально предполагалось, что ЕСИА будет использоваться исключительно для идентификации и авторизации на портале Госуслуги. Система появилась в 2010-ом году. Система постоянно развивалась, и ее стали использовать коммерческие организации, чтобы связать учетные записи с личностью в офлайн режиме.
Как авторизоваться на площадке
Новым пользователям нужно предварительно пройти регистрацию, выполняя несколько шагов:
• перейти на официальный сайт
Госуслуг и нажать на кнопку «регистрация»;
• в стандартной форме необходимо указать данные: ФИО, номер телефона, адрес электронной почты, адрес; далее подтвердить ввод данных;
• указать в соответствующем поле
код подтверждения, отправленный на номер мобильного.
Чтобы у начинающих пользователей не возникало вопросов, стоит подробно разобрать данный вопрос.
Вход в личный кабинет
для частных лиц
После прохождения регистрации пользователю становится доступно посещение государственных и частных учреждений: налоговой инспекции, ПФР, ГИС, ЖКХ.
Вход с использованием номера телефона
Авторизоваться в системе можно через стандартный веб-ресурс или посредством мобильного приложения. Для этого необходимо в специальную форму для входа вписать номер телефона и созданный пароль.
Авторизация через СНИЛС
Альтернативный способ авторизации через Госуслуги. Номер СНИЛС состоит из 11 цифр. Пароль остается идентичным, как и в случае со входом по номеру телефона. При этом разницы, каким образом авторизоваться на портале, не существует. При использовании СНИЛС встречаются следующие трудности:
• при регистрации была допущена ошибка в номере;
• СНИЛС не действителен;
• если была смена фамилии, а СНИЛС не был изменен.
Если данные аспекты отсутствуют, то СНИЛС возможно использовать для авторизации.
С использованием ЭЦП
Является наиболее безопасным способом при авторизации. Данный вариант могут использовать не только физические, но и юридические лица. Подпись значительно упрощает процесс работы на портале Госуслуг. Но предварительно нужно создать электронную цифровую подпись и установить специальное программное обеспечение, чтобы распознавался ключ.
Чтобы авторизоваться в системе этим методом, рекомендуется выполнить следующие действия:
• среди имеющегося списка выбрать ЭЦП;
• система автоматически запросит диск, карту или флешку, либо другой носитель, на котором должна быть записана информация о ключе;
• как только идентификация пройдена, пользователю будут доступны функциональные возможности кабинета.
Какие функциональные возможности дает идентификация
Авторизация через Госуслуги дает возможность использования личного кабинета. В зависимости от того, была ли пройдена идентификация, предлагается набор функциональных возможностей. При прохождении полной процедуры пользователи могут:
• подписывать документы в электронном формате, иметь доступ к конфиденциальным и медицинским данным;
• заполнять анкеты и заявления с автоматическим проставлением персональных данных: ФИО, сведения из паспорта, ИНН, информация о детях. При этом нет необходимости каждый раз проверять достоверность указанных данных;
• будет полезен личный кабинет не только для частных пользователей, но и для юридических лиц;
• для частных пользователей идентификация является гарантом хранения данных в конфиденциальном порядке. Также не потребуется запоминать пароли.
Какие существуют виды учетной записи
Когда пользователь регистрируется на портале Госуслуг, появляется личный кабинет, где можно оплачивать судебные задолженности и штрафы, получать справки в электронном формате, что позволяет избежать очередей в МФЦ. Уровень учетной записи зависит от того, какое количество информации будет указано в анкете. Чем подробнее будет заполнена анкета, тем больше функциональных возможностей будет предоставлено:
• при прохождении формальной регистрации, где необходимо указать ФИО, мобильный номер телефона и адрес электронной почты, учетной записи будет присвоен статус Упрощенной;
• стандартная учетная запись присваивается при указании в личном кабинете паспортных данных и СНИЛС;
• подтвержденная запись имеет наиболее высокий статус. Для этого идентификацию можно пройти через онлайн-банк Сбербанка, ТКС, Альфа-Банка или ВТБ, либо лично посетить отделение МФЦ.
Восстановление пароля
Нередко пользователь сталкивается с ситуацией, когда пароль от личного кабинета может быть утерян. Восстановление данных – это довольно простая процедура. Под формой входа на главной странице есть функция «забыли пароль». Системой автоматически будет предложено несколько вариантов: с использованием мобильного номера телефона, посредством ввода данных из паспорта, СНИЛС, ИНН.
После того, как информация будет указана, пользователю, зарегистрированному в системе, будет направлено смс сообщение с одноразовым паролем для входа. Далее нужно перейти в настройки и задать новую комбинацию для входа. В среднем, процедура занимает 15-20 минут и не предполагает каких-либо сложностей.
Какие возможности приобретают зарегистрированные пользователи
Сервис Госуслуги дает широкие функциональные возможности:
• поставить бронь на роспись в ЗАГСе, запросить копию свидетельства о рождении;
• отправить заявку на оформление нового загранпаспорта;
• поставить транспортное средство на учет;
• получить справку о несудимости;
• поставить ребенка на очередь в детский сад;
• оплачивать услуги ЖКХ;
• запрашивать выписки из налоговой, ПФР.
Большинство услуг возможно получить в дистанционном режиме, не выходя из дома.
В чем преимущества подтвержденной учетной записи
Если пользователь планирует использовать все функции, которые предоставляет портал Госуслуг, то прохождение идентификации является обязательным условием. Граждане с анонимной учетной записью не могут воспользоваться никакими функциями. Только при предоставлении полного пакета документов возможно прохождение идентификации.
За счет прохождения регистрации больше не нужно стоять в очередях, чтобы оплатить пошлину или штрафы. Еще одно важное преимущество – это получение привлекательных скидок при оплате через ресурс. Пенсионеры могут самостоятельно контролировать поступления, проверять начисления, а также узнавать о самых последних нововведениях, принятых в государственных проектах.

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

Зачем нам ЕСИА?
Согласно Федеральному закону № 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,
}
}
На этом шаге мы уже имеем все необходимые данные о пользователе. Остается только занести их в свою систему и закончить авторизацию.
Полный код интеграционного модуля на бэкенде
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,
}
}
}
Надеюсь, статья оказалась для вас полезной. Желаю, чтобы у вас все получилось без особых проблем!
Полезные материалы по теме
Cetera выполняет интеграцию с ЕСИА только в составе комплексных проектов по созданию, поддержке и развитию личных кабинетов
.
Принципы работы пользовательской идентификации
Чтобы получить доступ к полному пакету услуг после прохождения регистрации, нужно пройти идентификацию. Новые пользователи чаще всего не знают, что такое авторизация и как ее пройти через ЕСИА на сайте. ЕСИА
– это единственный возможный способ повысить уровень созданной учетной записи. В ситуации, когда частное или юридическое лицо работает с важными документами, денежными оборотами, без использования ЕСИА обойтись невозможно. Чтобы пройти успешную интеграцию, важно выполнить несколько моментов.
Первоначально предполагалось, что ЕСИА будет использоваться исключительно для идентификации и авторизации на портале Госуслуги. Система появилась в 2010-ом году. Система постоянно развивалась, и ее стали использовать коммерческие организации, чтобы связать учетные записи с личностью в офлайн режиме.
Как авторизоваться на площадке
Новым пользователям нужно предварительно пройти регистрацию, выполняя несколько шагов:
• перейти на официальный сайт
Госуслуг и нажать на кнопку «регистрация»;
• в стандартной форме необходимо указать данные: ФИО, номер телефона, адрес электронной почты, адрес; далее подтвердить ввод данных;
• указать в соответствующем поле
код подтверждения, отправленный на номер мобильного.
Чтобы у начинающих пользователей не возникало вопросов, стоит подробно разобрать данный вопрос.
Вход в личный кабинет
для частных лиц
После прохождения регистрации пользователю становится доступно посещение государственных и частных учреждений: налоговой инспекции, ПФР, ГИС, ЖКХ.
Вход с использованием номера телефона
Авторизоваться в системе можно через стандартный веб-ресурс или посредством мобильного приложения. Для этого необходимо в специальную форму для входа вписать номер телефона и созданный пароль.
Авторизация через СНИЛС
Альтернативный способ авторизации через Госуслуги. Номер СНИЛС состоит из 11 цифр. Пароль остается идентичным, как и в случае со входом по номеру телефона. При этом разницы, каким образом авторизоваться на портале, не существует. При использовании СНИЛС встречаются следующие трудности:
• при регистрации была допущена ошибка в номере;
• СНИЛС не действителен;
• если была смена фамилии, а СНИЛС не был изменен.
Если данные аспекты отсутствуют, то СНИЛС возможно использовать для авторизации.
С использованием ЭЦП
Является наиболее безопасным способом при авторизации. Данный вариант могут использовать не только физические, но и юридические лица. Подпись значительно упрощает процесс работы на портале Госуслуг. Но предварительно нужно создать электронную цифровую подпись и установить специальное программное обеспечение, чтобы распознавался ключ.
Чтобы авторизоваться в системе этим методом, рекомендуется выполнить следующие действия:
• среди имеющегося списка выбрать ЭЦП;
• система автоматически запросит диск, карту или флешку, либо другой носитель, на котором должна быть записана информация о ключе;
• как только идентификация пройдена, пользователю будут доступны функциональные возможности кабинета.
Какие функциональные возможности дает идентификация
Авторизация через Госуслуги дает возможность использования личного кабинета. В зависимости от того, была ли пройдена идентификация, предлагается набор функциональных возможностей. При прохождении полной процедуры пользователи могут:
• подписывать документы в электронном формате, иметь доступ к конфиденциальным и медицинским данным;
• заполнять анкеты и заявления с автоматическим проставлением персональных данных: ФИО, сведения из паспорта, ИНН, информация о детях. При этом нет необходимости каждый раз проверять достоверность указанных данных;
• будет полезен личный кабинет не только для частных пользователей, но и для юридических лиц;
• для частных пользователей идентификация является гарантом хранения данных в конфиденциальном порядке. Также не потребуется запоминать пароли.
Какие существуют виды учетной записи
Когда пользователь регистрируется на портале Госуслуг, появляется личный кабинет, где можно оплачивать судебные задолженности и штрафы, получать справки в электронном формате, что позволяет избежать очередей в МФЦ. Уровень учетной записи зависит от того, какое количество информации будет указано в анкете. Чем подробнее будет заполнена анкета, тем больше функциональных возможностей будет предоставлено:
• при прохождении формальной регистрации, где необходимо указать ФИО, мобильный номер телефона и адрес электронной почты, учетной записи будет присвоен статус Упрощенной;
• стандартная учетная запись присваивается при указании в личном кабинете паспортных данных и СНИЛС;
• подтвержденная запись имеет наиболее высокий статус. Для этого идентификацию можно пройти через онлайн-банк Сбербанка, ТКС, Альфа-Банка или ВТБ, либо лично посетить отделение МФЦ.
Восстановление пароля
Нередко пользователь сталкивается с ситуацией, когда пароль от личного кабинета может быть утерян. Восстановление данных – это довольно простая процедура. Под формой входа на главной странице есть функция «забыли пароль». Системой автоматически будет предложено несколько вариантов: с использованием мобильного номера телефона, посредством ввода данных из паспорта, СНИЛС, ИНН.
После того, как информация будет указана, пользователю, зарегистрированному в системе, будет направлено смс сообщение с одноразовым паролем для входа. Далее нужно перейти в настройки и задать новую комбинацию для входа. В среднем, процедура занимает 15-20 минут и не предполагает каких-либо сложностей.
Какие возможности приобретают зарегистрированные пользователи
Сервис Госуслуги дает широкие функциональные возможности:
• поставить бронь на роспись в ЗАГСе, запросить копию свидетельства о рождении;
• отправить заявку на оформление нового загранпаспорта;
• поставить транспортное средство на учет;
• получить справку о несудимости;
• поставить ребенка на очередь в детский сад;
• оплачивать услуги ЖКХ;
• запрашивать выписки из налоговой, ПФР.
Большинство услуг возможно получить в дистанционном режиме, не выходя из дома.
В чем преимущества подтвержденной учетной записи
Если пользователь планирует использовать все функции, которые предоставляет портал Госуслуг, то прохождение идентификации является обязательным условием. Граждане с анонимной учетной записью не могут воспользоваться никакими функциями. Только при предоставлении полного пакета документов возможно прохождение идентификации.
За счет прохождения регистрации больше не нужно стоять в очередях, чтобы оплатить пошлину или штрафы. Еще одно важное преимущество – это получение привлекательных скидок при оплате через ресурс. Пенсионеры могут самостоятельно контролировать поступления, проверять начисления, а также узнавать о самых последних нововведениях, принятых в государственных проектах.


При выполнении очередного госзаказа наша команда столкнулась с проблемой интеграции сайта с ЕСИА. Инструкции по решению этой задачи в сети нет, кроме информации в официальных документах МинКомСвязи (примерно 300 страниц в трех регламентах). Также есть компании, которые оказывают платные услуги по интеграции ЕСИА. Мы реализовали, описали процесс интеграции и решили поделиться с сообществом habrahabr.
Что такое ЕСИА
Е
диная С
истема И
дентификации и А
утентификации — российская информациия система, обеспечивающая доступ (регистрация, аутентификация) на сайты государтсвенных структур и некоторых коммерческих организаций. Подробнее на википедии
В процессе интеграции ЕСИА, система сможет отправлять запрос на ЕСИА и при успешной авторизации получать в качестве ответа данные пользователя
Сценарий авторизации выглядит примерно так:
- Пользователь на сайте, на котором внедряется ЕСИА, в личном кабинете нажимает на кнопку «Войти через ГосУслуги»
- Система переадресует на сайт ЕСИА
- Пользователь вводит свои логин и пароль на сайте ЕСИА
- При успешной авторизации ЕСИА возвращает пользователя обратно на сайт и по защищенному протоколу передает его личные данные
Госуслуги — это единый государственный портал
, благодаря которому каждый житель РФ может получить доступ к государственным и муниципальным услугам.
С появлением госуслуг решилась проблема вечных очередей, кучи записей и разрозненной базы пользователей в госучреждениях. Теперь при помощи портала можно и подать заявление на выдачу паспорта, и проверить автомобильные штрафы, и заказать выписку из трудовой книжки. Авторизация на Госуслугах происходит при помощи ЕСИА.
ЕСИА — это система идентификации, которая обеспечивает доступ к государственным ресурсам. В учетной записи ЕСИА содержатся все важные сведения о пользователе — паспортные данные, СНИЛС и ИНН, информация о штрафах и налогах, банковские данные. Е СИА работает для идентификации не только на Госуслугах, но и на других государственных или муниципальных порталах.
Для авторизации через ЕСИА (госуслуги) используется протокол SAML. Стандартом для PHP в решении этого вопроса стала библиотека SimpleSAML
.
При интеграции пытаюсь следовать этой
инструкции. Но очень многие моменты в ней опущены. Например: что делать с файлом метаданных? Куда его класть? Как-то нужно в конфигах указать для него путь?
В настоящий момент делаю так:
1. В simplesaml/metadata/saml20-idp-remote.php пишу данные для подключения:
$metadata['https://esia-portal1.test.gosuslugi.ru/idp/shibboleth'] = array(
'name' => array(
'ru' => 'Авторизация ЕСИА'
),
'privatekey' => 'private.key', //путь к файлу закрытого ключа
'certificate' => 'open.crt', //путь к сертификату открытого ключа
'SingleSignOnService' => 'https://esia-portal1.test.gosuslugi.ru',
);
