Есиа saml не работает

Сравнение вариантов подключения к ЕСИА

Сравнение вариантов подключения к ЕСИА

С использованием OpenID Connect / OAuth

УниверсальностьИспользовать протоколы OpenID Connect / OAuth может система любой организации, которой разрешено подключение ЕСИА.

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

Актуальность получаемых сведенийСистема получает сведения о пользователе, актуальные на момент выполнения запроса к REST-сервисам ЕСИА.

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

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

С использованием SAML

ОграниченностьСогласно регламенту Минкомсвязи использовать SAML для подключения к ЕСИА разрешено только системам органов власти и учреждениям, оказывающим государственные услуги.

Только зарубежная криптографияПри взаимодействии системы с ЕСИА можно использовать только RSA и только неквалифицированные сертификаты.

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

Читайте также:  Не работает охлаждение духового шкафа

Фрагментарность получаемых сведенийНе все сведения о пользователе можно получить по SAML. Получаемые сведения ограничены текущей ролью, выбранной пользователем при входе.

Получение сведений только онлайнСистема может получать от ЕСИА данные только в момент входа пользователя.

Источник

Интеграция ИС с ЕСИА посредством SAML

При выполнении очередного госзаказа наша команда столкнулась с проблемой интеграции сайта с ЕСИА. Инструкции по решению этой задачи в сети нет, кроме информации в официальных документах МинКомСвязи (примерно 300 страниц в трех регламентах). Также есть компании, которые оказывают платные услуги по интеграции ЕСИА. Мы реализовали, описали процесс интеграции и решили поделиться с сообществом habrahabr.

Что такое ЕСИА

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

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

Сценарий авторизации выглядит примерно так:

  • Пользователь на сайте, на котором внедряется ЕСИА, в личном кабинете нажимает на кнопку «Войти через ГосУслуги»
  • Система переадресует на сайт ЕСИА
  • Пользователь вводит свои логин и пароль на сайте ЕСИА
  • При успешной авторизации ЕСИА возвращает пользователя обратно на сайт и по защищенному протоколу передает его личные данные

Содержание

Общие сведения

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

Подключить ИС к ЕСИА возможно двумя способами:

  • Посредством стандарта SAML 2.0
  • На базе подхода REST

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

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

Установка SimpleSAMLphp

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

Последняя официальная версия SimplSAMLphp доступна на официальном сайте SimpleSamlPHP. Скачиваете архив, распаковываете модуль в папку /var.В целях безопасности для папки с разархивированным модулем необходимо настроить права доступа только для root пользователя. В конфигурации сервера необходимо добавить алиас и следующие правила:

Суть в том, чтобы по запросу ServerName/simplesaml открывалась приветственная страница simplesaml. Если вы все сделали правильно, то по запросу ServerName/simplesaml вы увидите такую страничку

Настройка SimpleSAMLphp для подключения к тестовой среде ЕСИА

Для интеграции необходимы сертификат ( cert.crt ) и ключ ( key.key ). Важно(!) с ГОСТовским сертфикатом ничего не выйдет, можно получить бесплатный сертификат, погуглив как это делается, либо выпустить сертификат самому. Ключ и сертификат кладем в папку simplesamlphp/cert

Для конфигурации SimpleSAMLphp необходимо отредактировать следующие файлы:

  • simplesamlphp/config/config.php
  • simplesamlphp/config/authsources.php
  • simplesamlphp/metadata/saml20-idp-remote.php

Важное замечание — время на сервере не должно отличаться от времени ЕСИА больше 1 минуты.

Важно знать, есть ли у системы entityID, если его нет, то в поле ‘entityID’ необходимо указать адрес системы

Теперь надо получить подпись для нашего сертификата (fingerprint). Это можно сделать в терминале одной из команд

  • openssl x509 -noout -fingerprint -in «cert.crt» SHA1
  • sha1sum cert.crt

Конфигурация файла метаданных

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

Файл метаданных доступен по ссылке: ServerName/simplesaml/module.php/saml/sp/metadata.php/esia?output=xhtml

Пример файла метаданных:

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

Пример файла метаданных, удовлетворяющий требованиям ЕСИА, может скачать по ссылке example.xml

Отправка заявки в адрес МинКомСвзяи на подключение ИС к тестовой среде ЕСИА

Теперь формируем заявку по форме «E» Регламента информационного взаимодействия Участников с Оператором ЕСИА. Форму заявки в формате docx можете скачать с нашего сайта по ссылке.

Теперь необходимо отправить заявку на почту esia@minsvyaz.ru с темой «Интеграция тестовой ЕСИА» и к письму необходимо приложить три файла:

  • скан заявки в формате pdf,
  • сертификат в формате crt
  • файл метаданных xml

После получения ответа от поставщика услуг (ЕСИА) со статусом «Решен» и приложенными файлами для тестирования, переходим к следующему шагу.

Возможно Вам придет ответ с темой «Требуется дополнительная информация по запросу #», в этом случае в письме будет информация о том, что необходимо исправить.

Функциональная интеграция с ЕСИА и получение данных авторизированных пользователей через ЕСИА

Проверить подключения ИС к тестовой среде можно по ссылке
ServerName/simplesaml/module.php/core/authenticate.php?as=esia .

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

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

Обработчик inc/esia.php . Тут мы получаем данные и можем записать их в базу, добавить в сессию и т.д. Вообще надо правильно парсить xml. Сейчас просто выведем данные на экран.

Отправка заявки на подключение ИС к продуктивной среде ЕСИА

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

В файлах simplesamlphp/config/authsources.php , simplesamlphp/metadata/saml20-idp-remote.php необходимо заменить idp поставщика услуг с Тестовой среды на продуктивную:

Теперь формируем новый файл метаданных, по факту меняются только ссылки в полях Service

По адресу esia@minsvyaz.ru отправляем письмо и прикрепляем 2 файла:

  • Новый файл метаданных
  • Заявку по форме М

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

На момент написания статьи актуальная версии Регламента — 2.7. При обновлении регламента возможны некоторые изменения во взаимодействии ИС с ЕСИА.

Источник

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

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

Аутентификация с использованием SAML доступна для использования исключительно государственными органами и организациями (далее — ОГВ), т.е. федеральными органами исполнительной власти, государственными внебюджетными фондами, органами исполнительной власти субъектов Российской Федерации, органами местного самоуправления, государственными и муниципальными учреждениями, многофункциональными центрами предоставления государственных и муниципальных услуг, а также иными организациями в случаях, предусмотренных федеральными законами, актами Президента Российской Федерации и актами Правительства Российской Федерации.

1 и 2 шаг: Регистрация ИС

Регистрация ИС осуществляется согласно Регламенту (раздел 6).

3 шаг: Доработать систему

Рекомендуемая последовательность действий:

1. Сформулировать функциональные требования к взаимодействию своей системы с ЕСИА.

Для этого следует:

— изучить рекомендуемые сценарии использования и выбрать нужные;

— определить перечень сведений о пользователе, которые вашей ИС требуется получать из ЕСИА в утверждениях SAML;

— определить требования к уровню достоверности идентификации пользователя (см. п. 4.1.1).

2. Представить для своей системы сертификат ключа неквалифицированной электронной подписи в формате X.509 версии 3. Сертификат требуется для идентификации ИС при взаимодействии с ЕСИА. Более подробную информацию о сертификате X.509 можно посмотреть по ссылке http://tools.ietf.org/html/rfc5280.

3. Сертификаты тестовой и продуктивной сред ЕСИА, используемые для формирования электронных подписей ответов как поставщика (алгоритм электронной подписи ГОСТ Р 34.10-2012 и алгоритм криптографического хэширования ГОСТ Р 34.11-2012).

4. Реализовать интерфейсы поставщика услуг SAML. В качестве исходных данных для разработки следует использовать:

— функциональные требования, сформированные на 1 шаге;

— спецификация SAML 2.0 (доступна по ссылке http://saml.xml.org/saml-specifications), в том числе описание профилей Web Browser SSO, Assertion Query/Request, Single Logout Profile;

— спецификация Interoperable SAML 2.0 Web Browser SSO Deployment Profile (доступна по ссылке http://saml2int.org/profile/current);

— описание форматов и примеры сообщений SAML в ЕСИА (см. п. А.4 — А.7 приложения А);

— рекомендации по использованию готовых реализаций поставщиков услуг с открытым кодом (см. п. А.2 приложения А).

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

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

7. Загрузить актуальные метаданные поставщика идентификации ЕСИА:

— метаданные тестового поставщика идентификации ЕСИА опубликованы по ссылке https://esia-portal1.test.gosuslugi.ru/idp/shibboleth ;

Здесь и далее esia-portal1 в ссылке — имя тестового домена в зависимости от тестовой среды. Конкретную тестовую среду для регистрации устанавливает оператор эксплуатации при обработке заявки на регистрацию.

— метаданные промышленного поставщика идентификации ЕСИА опубликованы по ссылке https://esia.gosuslugi.ru/idp/shibboleth.

8. Подготовить метаданные интегрируемой системы (поставщика услуг). Чтобы подготовить их правильно, рекомендуется использовать следующие исходные данные:

— описание файла метаданных (п. А.5 приложения А);

— требования вашей системы к типу учетной записи:

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

— допустимый метод аутентификации (по паролю, по КЭП, усиленная аутентификация) — блок SupportedGlobalRoles метаданных;

— допустимый уровень (статус) учетной записи (подтверждена или упрощенная/стандартная учетная запись) — блок SupportedAccTypes метаданных.

— требования вашей системы к перечню сведений о пользователе, которые нужно получать из ЕСИА в утверждениях SAML;

— сертификат ключа электронной подписи.

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

10. Осуществить подключение ИС к тестовой среде и отладить взаимодействие с ЕСИА в тестовой среде в соответствии с Регламентом .

4 шаг: Ввести доработку в эксплуатацию

1. Осуществить регистрацию метаданных в промышленной ЕСИА в соответствии с Регламентом .

2. После регистрации метаданных проверить работу промышленной версии ЕСИА с промышленной версией вашей системы.

Источник

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