В.5 Сведения о структуре и проверке маркера доступа
Используемый ЕСИА маркер состоит из трех частей:
1. Заголовок (header), в котором содержится общая информация о типе маркера, в том числе об использованных в ходе его формирования криптографических операциях.
2. Набор утверждений (payload/claim set) с содержательными сведениями о маркере.
3. Подпись (signature), которая удостоверяет, что маркер "выдан" ЕСИА и не был изменен при передаче.
Части маркера разделены точкой, так что он имеет вид:
Маркер передается в виде строки в формате Base64url <64>.
--------------------------------
<64> Подробнее см. в: http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-02#appendix-B
Каждая часть маркера содержит набор утверждений (claims) трех типов:
Заголовок (header) содержит описание свойств используемого маркера:
1. Алгоритм шифрования ("alg", стандартное обозначение); в настоящее время в ЕСИА поддерживается алгоритм электронной подписи ГОСТ Р 34.10-2012 (соответствует значению "GOST3410_2012_512"). <65>
--------------------------------
<65> Подробнее см. РП Технологического портала ЕСИА, п. 3.1.1 и п. 3.1.2: http://digital.gov.ru/ru/documents/6190/
2. Глобальный тип маркера ("typ", стандартное обозначение), который в ЕСИА всегда имеет значение "JWT" (JSON Web Token);
3. ЕСИА - специфический тип маркера и его версия ("sbt" и "ver" соответственно, приватное обозначение), что необходимо для использования в ЕСИА нескольких типов маркера; для маркера доступа - "access".
Например, заголовок маркера доступа в ЕСИА будет иметь следующий вид:
Сообщение (payload) включает в себя содержательные утверждения о субъекте. В случае, если система проводит аутентификацию пользователя с использованием механизма SAML, системе нет необходимости разбираться в формате payload маркера доступа. Однако если система проводит аутентификацию пользователя с использованием REST, ей необходимо извлечь необходимую информацию из сообщения маркера (payload) и проверить подпись ЕСИА.
Сообщение включает в себя содержательные утверждения о маркере доступа и субъекте:
- время прекращения действия ("exp") - в секундах с 1 января 1970 г. 00:00:00 GMT;
- время начала действия ("nbf") - в секундах с 1 января 1970 г. 00:00:00 GMT, т.е. маркер нельзя обрабатывать до наступления указанного времени;
- время выдачи ("iat") - в секундах с 1 января 1970 г. 00:00:00 GMT;
- организация, выпустившая маркер ("iss"), для маркеров ЕСИА всегда имеет определенное значение, которое совпадает с полем "субъект" используемого сертификата ЕСИА (http://субъект);
- адресат маркера ("client_id") - утверждение, ограничивающее системы/приложения ("аудитория"), которые могут использовать этот маркер. Для обозначения адресата в ЕСИА используется мнемоника данной ИС, зарегистрированной в ЕСИА. Соответственно, использовать маркер могут только системы с этой мнемоникой.
- идентификатор маркера ("urn:esia:sid") - набор случайных символов, имеющий вид 128-битного идентификатора, сгенерированного по стандарту UUID.
- идентификатор субъекта ("urn:esia:sbj_id"), в качестве значения указывается oid, этот идентификатор уникален для каждого субъекта, зарегистрированного в ЕСИА;
- область доступа ("scope"), в качестве значения - название области, к которой предоставляется доступ (например, "id_doc").
3. Данные о наличии делегирования полномочий ("urn: esia:authority"):
- дата истечения срока действия доверенности ("expired");
- идентификатор доверенности в ЕСИА ("id").
Пример сообщения (payload) маркера доступа в ЕСИА:
"nbf": 1537889904,
"urn:esia:authority": {
"expired": "16.09.2018",
"id": "1020"
},
"scope": "http://esia.gosuslugi.ru/usr_sec?mode=w&oid=1000299526
http://esia.gosuslugi.ru/usr_inf?mode=w&oid=1000299526 openid
http://esia.gosuslugi.ru/org_inf?org_oid=1000000001",
"iss": "http://esia.gosuslugi.ru/",
"urn:esia:sid": "dfa8dfe4e2cbad40fcfc974a9bcd445b570c2c90c22612047a940c56afa2c463",
"urn:esia:sbj_id": 1000299526,
"exp": 1537893504,
"iat": 1537889904,
"client_id": "PROFILE"
}
Подпись (signature) маркера осуществляется по тому алгоритму, который указывается в параметре "alg" маркера. Подпись вычисляется от двух предыдущих частей маркера (HEADER.PAYLOAD).
Системе-клиенту, использующей механизмы REST и OAuth 2.0 для аутентификации пользователей, рекомендуется осуществлять проверку маркера доступа, используя данные о его подписи. В общем виде эта процедура включает в себя следующие шаги <66>:
--------------------------------
<66> Подробнее см.: http://tools.ietf.org/pdf/draft-jones-json-web-token-10.pdf, http://tools.ietf.org/pdf/draft-ietf-jose-json-web-signature-02.pdf, http://tools.ietf.org/pdf/draft-ietf-jose-json-web-encryption-02.pdf
1. Осуществление base64url-декодирования первых двух частей маркера. В header указан алгоритм шифрования (параметр alg).
2. Третья часть маркера доступа представляет собой подпись в кодировке UTF-8 от значений первых двух частей маркера доступа (HEADER.PAYLOAD). Необходимо осуществить проверку данной электронной подписи с использованием сертификата ключа проверки электронной подписи ЕСИА.
3. Проверка времени выдачи, начала и прекращения маркера.
4. Проверка организации, выпустившей маркер, а также адресата маркера.
- Гражданский кодекс (ГК РФ)
- Жилищный кодекс (ЖК РФ)
- Налоговый кодекс (НК РФ)
- Трудовой кодекс (ТК РФ)
- Уголовный кодекс (УК РФ)
- Бюджетный кодекс (БК РФ)
- Арбитражный процессуальный кодекс
- Конституция РФ
- Земельный кодекс (ЗК РФ)
- Лесной кодекс (ЛК РФ)
- Семейный кодекс (СК РФ)
- Уголовно-исполнительный кодекс
- Уголовно-процессуальный кодекс
- Производственный календарь на 2025 год
- МРОТ 2024
- ФЗ «О банкротстве»
- О защите прав потребителей (ЗОЗПП)
- Об исполнительном производстве
- О персональных данных
- О налогах на имущество физических лиц
- О средствах массовой информации
- Производственный календарь на 2024 год
- Федеральный закон "О полиции" N 3-ФЗ
- Расходы организации ПБУ 10/99
- Минимальный размер оплаты труда (МРОТ)
- Календарь бухгалтера на 2024 год
- Частичная мобилизация: обзор новостей