Вы можете открыть актуальную версию документа прямо сейчас.
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Приложение А
Использование ЕСИА в целях идентификации и аутентификации посредством стандарта SAML 2.0
А.1 Общие сведения о стандарте SAML 2.0
Взаимодействие ИС с ЕСИА с целью идентификации и аутентификации осуществляется посредством электронных сообщений, основанных на стандарте SAML 2.0.
SAML 2.0 - основанный на XML стандарт по обмену информацией (утверждениями) об аутентификации и авторизации между доверенными доменами безопасности.
Основными компонентами SAML 2.0 являются:
1. Утверждение - информация о подлинности, атрибутах и назначениях;
2. Протокол - правила формирования запросов и ответов в процессе взаимодействий через SAML 2.0.
3. Связывание - отображение протокол SAML 2.0 на транспортные протоколы связи и передачи сообщений;
4. Профиль - сочетание утверждений, протоколов и связываний для поддержки конкретного сценария взаимодействия.
SAML 2.0 определяет синтаксис и семантику утверждений, относящихся к аутентификации, атрибутам и авторизационной информации. Определены следующие типы утверждений:
- утверждение по аутентификации - определяет, что данный субъект прошел аутентификацию определенным способом в определенный момент времени;
- утверждение по авторизации - определяет, на какие действия авторизован конкретный субъект;
- утверждение по атрибутам - определяет специфическую информацию о конкретном субъекте.
SAML 2.0 определяет способ передачи утверждений в протоколах. В ЕСИА используются следующие протоколы SAML 2.0 типа запрос/ответ:
- Authentication Request Protocol (протокол запроса аутентификации) - определяет способы, которыми аутентифицированный субъект может запросить утверждения, содержащие аутентификационные данные и атрибуты субъекта;
- Single Logout Protocol (протокол единого выхода) - определяет механизм одновременного завершения активных сессий, ассоциированных с аутентифицированным субъектом. Выход может инициироваться пользователем или поставщиком идентификации.
Связывания SAML 2.0 определяют, как различные сообщения протоколов SAML 2.0 могут передаваться поверх транспортных протоколов (например, SOAP, HTTP). B ЕСИА используются следующие связывания SAML 2.0:
- HTTP Redirect - определяет, как сообщения протокола SAML 2.0 могут передаваться, используя сообщения НТТР Redirect (ответы с кодом состояния 302);
- HTTP POST - определяет, как сообщения протокола SAML 2.0 могут передаваться с использованием сообщений НТТР POST.
Профили SAML 2.0 определяют, какие утверждения, протоколы и связывания SAML 2.0 могут использоваться в конкретных вариантах использования. В ЕСИА используются следующие профили SAML 2.0:
- Web Browser SSO - определяет, как реализовать однократную аутентификацию в стандартных веб-браузерах;
- Single Logout - определяет, как выполнить одновременный выход из всех сессий.
Как правило, поставщику услуг требуется детальная информация о результатах проведенной аутентификации. Эта информация содержится в контексте аутентификации, передаваемом в утверждениях SAML 2.0. Аутентификационный контекст (authentication context) определяет синтаксис для описания механизмов аутентификации.
А.2 Общие рекомендации по реализации интерфейсов поставщика услуг
Для реализации интерфейсов поставщика услуг можно использовать уже разработанные различные реализации поставщиков услуг с открытым кодом. Одним из таких поставщиков услуг является OIOSAML, реализованный под различные платформы. Различные реализации OIOSAML можно посмотреть на информационном ресурсе http://digitaliser.dk/group/42063/resources.
Примечание. В сборки последних версий OIOSAML разработчики стали включать библиотеки OpenSAML, которые несовместимы с ЕСИА. В настоящий момент с ЕСИА совместима версия 2.4.1. OpenSAML. Скачать данную версию можно по ссылке: http://www.shibboleth.net/downloads/java-opensaml/2.4.1.
Еще одним возможным вариантом реализации поставщика услуг для сред PHP является SimpleSAMLphp. Более подробную информацию о SimpleSAMLphp можно получить на информационном ресурсе http://simplesamlphp.org.
При самостоятельной реализации интерфейсов поставщика услуг на Java или C++ одним из возможных вариантов является использование набора библиотек с открытым кодом OpenSAML (строго версии 2.4.1.), который поддерживает работу со спецификациями SAML версии 1.0, 1.1 и 2.0. Подробную информацию о библиотеках OpenSAML можно посмотреть на информационном ресурсе https://wiki.shibboleth.net/confluence/display/OpenSAML/Home. Примеры кода по использованию OpenSAML для Java приведены в разделе А.7.
А.3 Общие требования к реализации интерфейса поставщика услуг
Интерфейсы поставщика услуг должны соответствовать следующим профилям SAML 2.0:
- Web Browser SSO с учетом рекомендаций Interoperable SAML 2.0 Web Browser SSO Deployment Profile;
- Single Logout.
Запрос к системе ЕСИА от информационной системы на идентификацию и аутентификацию пользователя должен быть подписан с помощью закрытого ключа информационной системы с использованием следующих алгоритмов:
- алгоритм c14n для каноникализации сообщения в формате XML;
- алгоритмы SHA-1 / SHA-256 / SHA-512 и RSA - для вычисления цифрового отпечатка сообщения и кода подтверждения целостности сообщения. В качестве протокола доставки должен использоваться метод связывания HTTP-redirect;
Ответ с результатами идентификации и аутентификации пользователя, сформированный системой ЕСИА, подписывается с помощью закрытого ключа системы ЕСИА и преобразуется с использованием открытого ключа информационной системы. При этом используются следующие алгоритмы:
- алгоритм c14n для каноникализации сообщения в формате XML;
- алгоритмы SHA-1 / SHA-256 / SHA-512 и RSA - для вычисления цифрового отпечатка сообщения и кода подтверждения целостности сообщения;
- алгоритмы RSA и SHA-1 / SHA-256 / SHA-512 для передачи ключа преобразования сообщения на основе открытого ключа информационной системы, алгоритм AES для осуществления преобразования на переданном ключе. В качестве протокола доставки сообщения от системы ЕСИА информационной системе используется метод связывания HTTP POST.
Запрос к системе ЕСИА от ИС на завершение активной сессии пользователя должен осуществляться из браузера пользователя и должен быть подписан с помощью закрытого ключа информационной системы с использованием следующих алгоритмов:
- c14n;
- SHA-1 / SHA-256 / SHA-512;
- RSA.
В качестве протокола доставки должен использоваться метод связывания HTTP-redirect.
Запрос от системы ЕСИА к ИС на завершение активной сессии пользователя подписывается с использованием закрытого ключа системы ЕСИА. При этом используются следующие алгоритмы:
- c14n;
- SHA-1 / SHA-256 / SHA-512;
- RSA.
В качестве протокола доставки используется метод связывания HTTP-redirect.
Ответ с результатами завершения активной сессии пользователя от информационной системы к системе ЕСИА должен быть подписан с помощью закрытого ключа информационной системы с использованием следующих алгоритмов:
- c14n;
- SHA-1 / SHA-256 / SHA-512;
- RSA.
В качестве протокола доставки должен использоваться метод связывания HTTP-redirect. Ответ с результатами завершения активной сессии пользователя от системы ЕСИА к информационной системе передается подписанным с помощью закрытого ключа системы ЕСИА с использованием следующих алгоритмов:
- c14n;
- SHA-1 / SHA-256 / SHA-512;
- RSA.
В качестве протокола доставки используется метод связывания HTTP-redirect.
А.4 Описание форматов электронных сообщений SAML 2.0 в ЕСИА
В данном разделе описываются следующие протоколы SAML 2.0, используемые ЕСИА при формировании электронных сообщений:
- протокол запроса аутентификации;
- протокол единого выхода.
Запрос аутентификации (AuthnRequest)
Запрос аутентификации (AuthnRequest) представляет собой XML-документ, который содержит следующие элементы:
1. saml2p:AuthnRequest - описывает параметры запроса AuthnRequest и содержит следующие атрибуты:
- AssertionConsumerServiceURL - URL провайдера услуг, предназначенный для обработки ответов от поставщика идентификации (необязательный);
- Destination - URL-адрес ИС-поставщика идентификации, предназначенный для обработки AuthnRequest;
- ID - уникальный идентификатор сообщения;
- IssueInstant - дата создания запроса;
- ProtocolBinding - используемая SAML привязка.
2. saml2:Issuer - идентификатор поставщика услуг, отправившего AuthnRequest (является вложенным по отношению к элементу saml2p:AuthnRequest).
Структура AuthnRequest:
Пример AuthnRequest:
Для сгенерированного SAML 2.0 сообщения с запросом AuthnRequest должно быть выполнено связывание (binding) с протоколом HTTP по методу HTTP-Redirect с учетом следующих особенностей:
- сообщение подписывается с помощью электронной подписи поставщика услуг, причем подписана должна быть строка запроса на аутентификацию пользователя;
- подписанное сообщение сжимается и кодируется в кодировке Base64.
В процессе связывания формируется конечный URL AuthnRequest, который в качестве GET-параметров должен содержать:
- SAMLRequest - AuthRequest в конечном виде;
- SigAlg - алгоритм подписи запроса, с помощью которого выполнялась подпись запроса аутентификации;
- Signature - подпись, полученная в результате подписания запроса аутентификации.
Пример URL AuthnRequest:
Ответ на запрос аутентификации (AuthnResponse).
В случае успешной аутентификации поставщик идентификации формирует ответ на запрос аутентификации - AuthnResponse, который содержит утверждение (Assertion) об аутентификации. AuthnResponse представляет собой XML-документ со следующей структурой:
Элементы saml2:Issuer и saml2:Signature содержат идентификатор поставщика идентификации и электронную подпись, созданную с помощью сертификата поставщика идентификации.
Элемент saml2:Subject содержит информацию о AuthnRequest, которому соответствует данный AuthnResponse, и представляет собой следующую структуру:
Элемент saml2:NameID содержит уникальный идентификатор, присвоенный поставщиком идентификации соответствующему AuthnRequest.
Элемент saml2:SubjectConfirmationData содержит набор атрибутов, в том числе:
- InResponseTo - содержит идентификатор AuthnRequest (соответствует значению атрибута ID);
- NotOnOrAfter - содержит дату, до которой данный AuthnRequest действителен.
- Recipient - URL обработчика AuthnResponse (соответствует значению AssertionConsumerServiceURL).
Элемент saml2:Condition содержит описание условий, при которых данный AuthnResponse считается действительным. Данный элемент имеет два атрибута - NotBefore и NotOnOrAfter, которые указывают на временной промежуток, в который данный AuthnResponse действителен. Также saml2:Condition имеет вложенный элемент saml2:AudienceRestriction, который содержит элемент saml2:Audience с указанием уникального идентификатора поставщика услуг (entity id). Уникальный идентификатор системы в ЕСИА (entity id) не должен содержать символов кириллицы.
Элементы saml2:AuthnStatement и saml2:AttributeStatement содержат информацию о результатах аутентификации.
Элемент saml2:AuthnStatement имеет два атрибута:
- AuthnInstant - дата аутентификации;
- SessionIndex - уникальный идентификатор сессии пользователя (с помощью него, например, выполняется повторная аутентификация и операция Logout).
Элемент saml2:AttributeStatement содержит атрибуты пользователя и имеет следующую структуру:
Элемент saml2:Attribute имеет три атрибута:
- FriendlyName - сокращенное наименование атрибута;
- Name - полное наименование атрибута;
- NameFormat - формат полного наименования атрибута.
Элемент saml2:AttributeValues состоит из двух атрибутов: xmlns:xsi и xsi:type. Эти атрибуты определяют формат значения атрибута пользователя.
Пример AuthnResponse приведен в разделе А.9.
Запрос завершения активной сессии пользователя (LogoutRequest)
Запрос завершения активной сессии (LogoutRequest) представляет собой XML-документ со следующей структурой:
Завершение активной сессии пользователя может быть инициировано как со стороны поставщика услуг, так и со стороны поставщика идентификации. В случае, если завершение сессии инициирует поставщик услуг, то LogoutRequest должен содержать обязательный элемент saml2:SessionIndex.
Элемент saml2: LogoutRequest имеет следующие атрибуты:
- Destination - содержит URL обработчика LogoutRequest. В случае если завершение сессии инициировано поставщиком услуг, то содержит URL поставщика идентификации, и наоборот, если инициирован поставщиком идентификации - то URL SP.
- ID - содержит уникальный идентификатор сообщения.
- IssueInstant - дата формирования сообщения.
- Reason - присутствует в случае инициализации завершения сессии со стороны поставщика услуг.
Элемент saml2:Issuer в качестве значения содержит идентификатор (entity_id)
инициатора завершения сессии - либо поставщика услуг, либо поставщика идентификации.
Элемент saml2:NameID в качестве значения содержит уникальный идентификатор присвоенный поставщиком идентификации соответствующему AuthnRequest.
Элемент saml2:SessionIndex содержит уникальный идентификатор пользователя, созданный при аутентификации.
Запрос на завершение сессии должен производиться из браузера (от имени пользователя). В качестве протокола доставки должен использоваться метод связывания HTTP- redirect.
Примеры запроса завершения сессии:
Ответ на запрос завершения активной сессии (LogoutResponse).
Ответ на запрос завершения активной сессии (LogoutResponse) представляет собой XML-документ со следующей структурой:
Элемент saml2:LogoutResponse имеет следующие атрибуты:
- Destination - содержит URL обработчика LogoutResponse. В случае если завершение сессии инициировано поставщиком услуг, то содержит URL поставщика идентификации, и наоборот, если инициирован поставщиком идентификации - то URL поставщика услуг.
- ID - содержит уникальный идентификатор сообщения.
- InResponseTo - содержит идентификатор LogoutRequest.
- IssueInstant - дата формирования сообщения.
Элемент saml2:Issuer, в зависимости от инициатора завершения сессии, в качестве значения содержит идентификатор (entity_id) инициатора завершения сессии - либо поставщика услуг, либо поставщика идентификации.
Элемент saml2p:Status имеет вложенный элемент saml2p:StatusCode, имеющий атрибут Value, в качестве значения которого передается статус операции.
При этом ответ на запрос завершения сессии не содержит параметр RelayState, переданный изначально при аутентификации пользователя.
Примеры ответа на запрос завершения сессии:
А.5 Описание метаданных поставщика услуг
Метаданные поставщика услуг определяют способ описания конфигурационных данных (например, URL конечных точек веб-служб, ключи для проверки ЭП). Для описания метаданных ИС поставщика услуг используется язык XML. Структура файла метаданных ИС поставщика услуг приведена на рисунке 13.
Перечень атрибутов пользователя (организации), содержащихся в файле метаданных поставщика услуг, приведен в таблице 5. Системам, интегрированным с ЕСИА, рекомендуется не использовать или отказаться от использования устаревших утверждений SAML (см. Приложение Д.2).
Если у пользователя или организации отсутствуют те или иные атрибуты, то они не передаются в SAML-утверждениях.
Таблица 5 - Перечень атрибутов, содержащихся в файле метаданных поставщика услуг
N |
Атрибут |
Описание |
Примечание |
1. |
assuranceLevel |
Уровень достоверности идентификации пользователя. Возможны следующие значения: AL10 - упрощенная (непроверенная) учетная запись; AL15 - стандартная (проверенная) учетная запись; AL20 - подтвержденная учетная запись; AL30 - подтвержденная учетная запись (аутентификация по КЭП). |
Рекомендуется использовать атрибуты: - personTrusted - для определения подвержденных учетных записей; - authnMethod - для определения метода аутентификации. |
2. |
attachedToOrg |
Признак включенности (присоединения) к организации |
Необходимо использовать globalRole |
3. |
authnMethod |
Метод аутентификации. Принимает следующие возможные значения: PWD - аутентификации по логину и паролю; DS - аутентификации по ЭП. |
|
4. |
authToken |
Идентификатор сессии пользователя в системе ЕСИА |
|
5. |
birthDate |
Дата рождения пользователя. Передается в формате DD-MM-YYYY |
|
6. |
firstName |
Имя пользователя. Не более 256 символов |
|
7. |
gender |
Пол пользователя. Принимает значения: MALE - мужской; FEMALE - женский. |
|
8. |
globalRole |
Роль пользователя. Принимает следующие возможные значения: P - физическое лицо (Physical person); E - должностное лицо организации (Employee). |
|
9. |
inn |
ИНН пользователя |
Сохранен для обеспечения совместимости. Вместо него необходимо использовать personINN |
10. |
lastName |
Фамилия пользователя. Не более 256 символов |
|
11. |
middleName |
Отчество пользователя. Не более 256 символов |
|
12. |
memberOfGroups |
Принадлежность пользователя к группам доступа ИС, осуществляющей идентификацию и аутентификацию должностных лиц ЮЛ. Передается в виде мнемоник системных групп через запятую |
Использовать для определения принадлежности должностных лиц ЮЛ к группам доступа ИС |
13. |
name |
Имя пользователя |
Сохранен для обеспечения совместимости. Необходимо использовать lastName / firstName / middleName |
14. |
nsiId |
Мнемоника ОГВ |
Сохранен для обеспечения совместимости. Необходимо использовать orgOGRN и orgType |
15. |
orgAddresses |
Адрес организации. Передается в виде XML документа |
Каждый адрес в настоящее время описывается следующими атрибутами: <addressType> - тип адреса, в настоящее время может принимать значения: - ORG_LEGAL - юридический адрес; - ORG_POSTAL - почтовый адрес. <contryChar3Code> - код страны из трех символов (для России - RUS); <index> - индекс; <region> - субъект РФ; <district> - внутригородской район; <settlement> - населенный пункт; <street> - улица; <house> - дом; <corpus> - корпус; <structure> - строение; <flat> - квартира. Все атрибуты, начиная с индекса, - не более 256 символов. |
16. |
orgBranchKPP |
КПП филиала, передается в формате XXXXXXXX, где X - цифры |
|
17. |
orgBranchName |
Имя филиала |
|
18. |
orgContacts |
Телефон и Email организации. Передается в виде XML документа |
Каждый контакт в настоящее время описывается следующими атрибутами: <contactType> - тип контакта, в настоящее время может принимать значения: - PHN (телефон); - EML (адрес электронной почты); - FAX (факс). <value> - значение контакта, для телефона и факса имеет формат +7(XXX)XXXXXXX*YYYYYY, где * YYYYYY - добавочный номер (только для PHN, опционально, не более 6 цифр), для адреса электронной почты - не более 2000 символов; <verificationStatus> - - статус подтверждения контакта, где S - подтверждено, N - не по |
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.