Актуальную версию документа см. на сайте Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации по адресу https://digital.gov.ru/ru/documents/6186/.

В.6.2.2 Проверка наличия аутентификации в фоновом режиме

Механизм бесшовной аутентификации предназначен для проведения автоматической аутентификации пользователя в ЕСИА при переходе в web-браузере на страницу информационной системы, интегрированной с сервисом авторизации ЕСИА (OAuth2.0). Данный механизм, основанный на OpenID Connect 1.0, использует функцию фоновой проверки наличия у пользователя авторизационной сессии в ЕСИА.

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

Работоспособность механизма бесшовной аутентификации поддерживается в следующих браузерах согласно разделу 1.3 "Поддерживаемые браузеры" документации МР ЕСИА версии 2.54:

- Google Chrome;

- Yandex Browser;

- Mozilla FireFox;

- Opera;

- Internet Explorer.

Функция фоновой проверки доступна к использованию отдельно от механизма бесшовной аутентификации, но при наличии разрешения у ИС-потребителя на использование механизма бесшовной аутентификации (см. ниже подраздел "Предоставление доступа к функциям механизма бесшовной аутентификации").

На странице авторизации ЕСИА разработан JS-плагин, точкой входа для которого является ссылка на сервис/ас (ЕСИА) с входными параметрами, передаваемыми JS-плагину внешней ИС.

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

- <client_id> - идентификатор системы-клиента (мнемоника системы в ЕСИА, указанная прописными буквами);

- <client_secret> - подпись запроса в формате PKCS#7 detached signature в кодировке UTF-8 от значений следующих параметров HTTP-запроса: scope, timestamp, client_id, state (без разделителей). <client_secret> должен быть закодирован в формате base64 url safe. Используемый для проверки подписи сертификат должен быть предварительно зарегистрирован в ЕСИА и привязан к учетной записи системы-клиента в ЕСИА;

- <redirect_uri> - ссылка, по которой должен быть направлен пользователь после того, как даст разрешение на проведение аутентификации;

- <scope> - область доступа, т.е. запрашиваемые права; для проведения аутентификации пользователя scope должен иметь значение openid. Если системе потребуется получение дополнительных данных о пользователе (например, детальная информация о пользователе), то могут быть указаны дополнительные scope через пробел;

- <response_type> - это тип ответа, который ожидается от ЕСИА, имеет значение code, поскольку система-клиент должна получить авторизационный код;

- <state> - набор случайных символов, имеющий вид 128-битного идентификатора запроса (необходимо для защиты от перехвата), генерируется по стандарту UUID;

- <timestamp> - время запроса авторизационного кода в формате yyyy.MM.dd HH:mm:ss Z

- <prompt>=<none> - возможность фоновой проверки информационной системой, интегрированной с ЕСИА, наличия у пользователя сессии в ЕСИА.

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

- <code> - значение авторизационного кода;

- <state> - значение параметра state, который был получен в запросе на аутентификацию; система-клиент должна провести сравнение отправленного и полученного параметра state.

Пример запроса:

https://esia-portal1.test.gosuslugi.ru/aas/oauth2/ac?timestamp=2015.11.27+13%3A03%3A52+%2B0300&scope=

openid&client_secret=MIIFpgYJKoZIhvcNAQcCoIIFlzCCBZMCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGgggNpMI

IDZTCCAk2gAwIBAgIECgPdVzANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJSVTEPMA0GA1UECBMGTW9zY293MQ8wDQYDVQQHEwZNb

3Njb3cxEDAOBgNVBAoTB0NvbXBhbnkxDzANBgNVBAsTBlN5c3RlbTEPMA0GA1UEAxMGU3lzdGVtMB4XDTE1MTAyOTE0MTUxMFoXDTE2

MDEyNzE0MTUxMFowYzELMAkGA1UEBhMCUlUxDzANBgNVBAgTBk1vc2NvdzEPMA0GA1UEBxMGTW9zY293MRAwDgYDVQQKEwdDb21wYW5

5MQ8wDQYDVQQLEwZTeXN0ZW0xDzANBgNVBAMTBlN5c3RlbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKhCeBbYRs89aP

Lf0TIytSufxmZsrgWVy2a0uOi8dyp-

vw6h3cqNh219WNNlyv0gYpiM8hNs6y7vKrQ2k83aur1b9a2RQ1LX0w1xAW55PHBsTS6I3FNLfLzPl0WIjiFEaqJl98--

L4BkR2Bk_CHroffMvUU5fqVPEfP4PFYD2oflBOoMBmXeemn0-xyZcnZ00WAvvRSfAYOaFp189EUV9QmVgvrKkc81Pqkx49dHH0KHFH-

s1uvZIkCcgnmdXBco5eeDg7EP9XbJuVp4uge9jDLBMw4SqzWQVUNmDJ0Vu5dWJUF8m5Z_TKEQ0nPVY9f7aqSJpiF-

N98TMgurGQzRJCECAwEAAaMhMB8wHQYDVR0OBBYEFMdZZfnOLJt2NkqTsqQq8biljqhRMA0GCSqGSIb3DQEBCwUAA4IBAQBMznNVeP4

E3fgWU4ZK9D2f78ONF330mE9xCLCDByDTMTMyCP6TEuMkDUYZ8UHQbohftwI6SP-0wjvYUe0qfjPu6IzID3n-

YM9642GHpzR0aR1ZXp8FM2p2GG5bQ3bGIE8Aa98SLXQzz6fOcYh3IvE-

YKHXEAGOgrx0Uh6xcTW7hZySEC74o9kn0atqp_L2p7dHnsjA-coKerKgbN5jJCwz6y0O_LBUKCAaffZ89BU-

5qrV_v1XnniF756h2Szk4KczSDex3IFXEUrntEpTWH1YhKNtwzvaMC92xSOgunpNo8lx4s9oNIobOKJEvKr1pR_caBgioy8SLLWecpS

ocb9BMYICATCCAf0CAQEwazBjMQswCQYDVQQGEwJSVTEPMA0GA1UECBMGTW9zY293MQ8wDQYDVQQHEwZNb3Njb3cxEDAOBgNVBAoTB0

NvbXBhbnkxDzANBgNVBAsTBlN5c3RlbTEPMA0GA1UEAxMGU3lzdGVtAgQKA91XMA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDM

QsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTUxMTI3MTAwMzUyWjAvBgkqhkiG9w0BCQQxIgQgu-JPaWt-

aHVLaF13Qudx5znqCAwpTPfdsv7scyfLMwYwDQYJKoZIhvcNAQEBBQAEggEAMQL3Uso76eQQPQ3DzewTUZujGwOi25WZyAYuQCxYlI-

liFOIQ74U2s5EPS-rK2EFVkgRPOjHIJ4lEcR8O1ObSowevI63a-4Tk4KF70-h0kLano93sixH0WmeAJpFoj8-

JpsMhJ_EJJwLtOpUvlbrWTQtk3d9F-

3vXdh6sXo91QtPzol_o3DkpS93mk5bYWBP92nHPvSfbadtBrtjWahq7UA3WUrQHCaLuIrsS0TRitya-Jv-0GJds-

hgEST2xlhbFz7eMgZmlTHsVrBCZngdO-

6jSIQVt4p99vD6uMhLKmIFrvNsOE1myaZL2AweumcyAZmS8Tb3tX953un_5CvVdw&response_type=code&redirect_uri=https%

3A%2F%2Fesia-portal1.test.gosuslugi.ru%2Faas%2Foauth2%2Ftest%2FoauthCallback.xhtml&state=f21125b6-60e2-

4edc-a0ab-e7da2d31708f&prompt=none&client_id=TESTSYS

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

- при отсутствии активной сессии пользователя будет возвращен ответ с сообщением о необходимости авторизации пользователя в ЕСИА;

Пример ответа с описанием его атрибутов:

{"error_description":"ESIA-007017:+OAuthErrorEnum.loginRequired","state":"25a40796-9d52-ff81-

18e1-87b85627129c","error": "login_required"}

error_description - номер (ESIA-007017) с мнемоникой ошибки (OAuthErrorEnum.loginRequired);

state - значение параметра state, который был получен в запросе на аутентификацию; система-клиент должна провести сравнение отправленного и полученного параметра state (d1802583-8733-337a-8058-60991fe8d715);

error - наименование ошибки (login_required, означает - пользователь не имеет активной сессии).

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

Пример ответа с описанием его атрибутов:

{"error_description":"ESIA-007018:+OAuthErrorEnum.interactionRequired","state":"45a35778-3a52-

gg5218w563b84657722c","error":"interactionRequired"}

error_description - номер (ESIA-007018) с мнемоникой ошибки (OAuthErrorEnum.interactionRequired);

state - значение параметра state, который был получен в запросе на аутентификацию; система-клиент должна провести сравнение отправленного и полученного параметра state (efa12233-ft83-267a-5s58-29041fe8d715);

error - наименование ошибки (interaction_required, означает - отсутствие у пользователя выданных разрешений для ИС).

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