Аутентификация через ЕСИА

Компонент «Аутентификация Platform V IAM» позволяет выполнять аутентификацию через ЕСИА.
При использовании ЕСИА нужно зарегистрировать сервис в Минкомсвязи РФ, получить сертификаты безопасности и мнемонику (уникальный идентификатор сервиса в ЕСИА). Подробнее с процедурой регистрации организации в ЕСИА и получения сертификатов и мнемоники можно ознакомиться в документах:
Настройка аутентификации через ЕСИА включает:
  1. Добавление поставщика идентификации.
  2. Добавление сценария для первого входа через ЕСИА.
  3. Добавление сценария после аутентификации.
  4. Установка созданных сценариев в поставщике ЕСИА.
  5. Настройка отдаваемой информации.
  6. Настройка при необходимости работать через HTTP-прокси (настройка http-клиента Keycloak).
  7. Проверка аутентификации в ЕСИА.
  8. Получение информации о пользователе.
Для аутентификации через ЕСИА нужно получить сертификат, который администраторы добавят на виртуальную машину с IAM Keycloak (для добавления нужно завести заявку). Без сертификата невозможна работа как с промышленным, так и с тестовым стендом ЕСИА.
При формировании подписи запроса в ЕСИА используются RSA-ключи из сертификата сервиса аутентификации Платформы.
Все действия, описанные в разделе, выполняются администратором/пользователем целевого реалма (Realm) с ролью realm-admin.

Добавление поставщика идентификации

Поставщик идентификации (Identity Provider) позволяет конфигурировать способ подключения и тип запрашиваемых данных из ЕСИА.
Чтобы добавить и настроить поставщика идентификации:
  1. Добавьте нового поставщика идентификации с типом «Esia Identity Provider».
    1. Перейдите на вкладку «Поставщики идентификации». Если при переходе отображается ошибка, обратитетсь к администратору.

      Увеличить

    2. В поле «Добавить поставщика» выберите «Esia Identity Provider». Если поставщик идентификации ЕСИА уже создан, внесите изменения в существующего.

      Увеличить

  2. Укажите параметры:
    ПараметрЗначение
    Мнемоника
    Индивидуальный идентификатор сервиса в ЕСИА.
    Пример значения: SBER_PLATFORMAUTH
    Сервер ЕСИА
    Для тестовых сред https://esia-portal1.test.gosuslugi.ru
    Для Пром https://esia.gosuslugi.ru
    Алгоритм подписи для сертификатов на RSA
    (только для тестовой ЕСИА)
    PKCS7-RSA256
    Алгоритм подписи для сертификатов на GOST
    (для Пром)
    CryptoPro-256 или CryptoPro-512
    Области по умолчанию
    Области данных, на которые отправляется запрос при первой аутентификации пользователя. Дальнейшее получение данных будет доступно только из указанных здесь областей данных.
    Если оставить это поле пустым, будет использоваться набор по умолчанию. Чтобы получить более полный набор атрибутов, заполните значение "fullname birthdate inn snils id_doc email mobile contacts usr_org"
    Замечания:
    - указанные значения должны совпадать с областями данных в ЕСИА. Перечень актуальных областей указан в документе «Методические рекомендации по использованию Единой системы идентификации и аутентификации»;
    - набор доступных областей данных зависит от мнемоники и от настроенного сценария
    Хранение токенов
    Включите опцию, если в дальнейшем будет использован Шлюз ЕСИА для получения данных из дополнительных областей данных, не вошедших в набор "fullname birthdate inn snils id_doc email mobile contacts usr_org"
    Сохраненные токены доступны на чтение
    Включите опцию, если в дальнейшем будет использован Шлюз ЕСИА для получения данных из дополнительных областей данных, не вошедших в набор "fullname birthdate inn snils id_doc email mobile contacts usr_org"
  3. Задайте публичный ключ ЭП. Для этого извлеките его из сертификата ЭП ЕСИА. ЭП ЕСИА — сертификат ЕСИА как системы, используется для проверки подписей сообщений от ЕСИА.
    openssl x509 -pubkey -noout -in esia_sign_cert.pem > esia_sign_pubkey.pem
    В раскрывающейся области ниже — извлеченные ключи, которые вы можете задать в настройке.
    Ключи type=sh
    
    для стенда https://esia-portal1.test.gosuslugi.ru
    
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Rw9xG1g+QQ0QgB8bwSq
    xJxOU84tjHI7uhvwCnyJQAb9SNLRkeraBjmhA29oCAn9uv56kaYe9YNhqijRsNVG
    yIAAZTB0EHv99xqIqdoOtv4io2o7JbxNomun7ENrOF2ZQT7Ukqr4b748FvKSGoX0
    OVcB7Sru6HU7NAH1oNJ4bbNr8SeHcP4CGZsF20y/L0OjT+TENFQD9eNpOIuyWPL5
    2F1apKIf5si4yTBxg9QZlBzrwuBGRW1ah2slBjJ95Fu7Q82uM5Zc7oqwFsYhni3v
    HXxi1rX2HCtgAKeBb0QJ5z1KwNGovPhBNtmRPW0JTFeX0CgvHNRUsPgki566cVLb
    AQIDAQAB
    -----END PUBLIC KEY-----
    
    для https://esia.gosuslugi.ru:
    
    -----BEGIN PUBLIC KEY-----
    MIIBCgKCAQEAg4/V4iNjYrC4gBSM7OlDbYHNqpyfUYkoRoZ+GGcTU/Vd47srTLlhFADtTcC4GangTY9p1zpm1DGO7nhVRb6IUKWt49jwRApvH2k/vo4Nlou6bwqZeeg1BVJZRGBH5UtnZ5k5gR3qKyntb+RpG3sAWfZQicH6yfoWbBS6ypfJ0EJ7GNxaeAn5akjSYMwFx4mRVG2pYo+Ly2jjd5XlbWhqnMle6sROvR4y7SaudqW2Bg7sE/8ZrYGJRBdgMn5d83M6uxOEhp4yp8TP3+NnXAxIkeK4IMaBMwzfw/OGjbS8a/UMnN1EMT4bkXbk0z/Y/5guI2H1MrrgsIQs6VQorf9JzwIDAQAB
    -----END PUBLIC KEY-----
    
    
    Вы можете задать в поле «Проверка публичного ключа» содержимое esia_sign_pubkey.pem или скопировать значение ключа из блока выше.

    Увеличить

Добавление сценария для первого входа через ЕСИА

Настройка действий после аутентификации опциональна. Описанные ниже шаги позволяют получить дополнительную информацию о пользователе в контексте каждого запроса к прикладным приложениям. Перед настройкой создайте сценарий аутентификации, если он еще не создан.
Чтобы добавить сценарий для первого входа через ЕСИА:
  1. На странице «Аутентификация» нажмите «Создать» на вкладе сценариев.

    Увеличить

  2. Укажите параметры создания формы: введите название сценария в поле «Синоним», дайте описание.

    Увеличить

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

    Увеличить

    Увеличить

    Увеличить

Итоговый вид сценария:

Увеличить

Добавление сценария после аутентификации

Описанные в этом разделе шаги 4-6 опциональны. Эти шаги нужны, чтобы получать данные для авторизации и часто используемые данные в приложениях. Чтобы получать редко используемые данные, воспользуйтесь Шлюзом ЕСИА.
Чтобы добавить сценарий, выполняемый после аутентификации:
  1. Создайте верхнеуровневую форму аутентификации.

    Увеличить

  2. Добавьте исполнения в следующем порядке:

    Увеличить

    • Get ESIA User Info — для получения информации о пользователе;
    • ESIA Organization List — для получения списка организаций;
    • ESIA Organization Choice — для отображения меню выбора организации, от лица которой пользователь хочет пройти аутентификацию;
    • Get ESIA User Roles — для получения списка ролей/групп пользователя;
  3. В столбце «Требования» выставите для каждого исполнения значение «REQUIRED».
  4. Задайте параметры для каждого исполнения. Для настройки выберите в строке соответствующего исполнения «Действия» → «Конфигурация».
    • Конфигурация Get ESIA User Info:

      Увеличить

    • Конфигурация ESIA Organization List:

      Увеличить

    • Конфигурация ESIA Organization Choice:

      Увеличить

    • Конфигурация Get ESIA User Roles:

      Увеличить

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

Установка созданных сценариев в поставщике ЕСИА

Чтобы установить сценарии:
  1. Откройте параметры провайдера аутентификации ЕСИА.
  2. В полях «Сценарий первого входа» и «Сценарий после входа» выставите созданные сценарии.

    Увеличить

Настройка отдаваемой информации

Отдаваемая информация настраивается с помощью настройки мапперов в скоупах и клиентах.
Чтобы настроить отдаваемую информацию:
  1. Откройте клиент PlatformAuth-Proxy и перейдите на вкладку «Сопоставления».

    Увеличить

  2. Добавьте в токен id пользователя ЕСИА.
    1. Нажмите в сопоставлениях «Создать» и выберите тип «User Session Note».
    2. Заполните поля и нажмите «Сохранить».
      Пример заполнения:

      Увеличить

  3. Добавьте в userinfo информацию о пользователе из ЕСИА.
    1. Нажмите в сопоставлениях «Создать» и выберите тип «ESIA Info Mapper».
    2. Заполните поля и нажмите «Сохранить».
      Пример заполнения:

      Увеличить

Настройка при необходимости работать через HTTP-прокси (настройка http-клиента Keycloak)

Эта настройка нужна в том случае, если с сервера нет прямого доступа в Интернет, и выход в Интернет производится с использованием http-proxy.
Для настройки:
  1. Откройте файл /opt/keycloak-4.8.3.Final/standalone/configuration/standalone-ha.xml.
  2. Внесите изменения в секцию <spi name="connectionsHttpClient">: строка http://userproxy:proxySecretPass@172.31.8.9:3333 заменяется на соответствующую конкретному стенду и параметрам прокси.
    standalone-ha.xml type=xml
    <spi name="connectionsHttpClient">
     <provider name="default" enabled="true">
         <properties>
             <property
             name="proxy-mappings"
             value="[.*\\.gosuslugi\\.ru;http://userproxy:proxySecretPass@172.31.8.9:3333]"/>
         </properties>
     </provider>
    </spi>
    

Проверка аутентификации в ЕСИА

Для проверки аутентификации:
  1. Выберите опцию «Вход через ЕСИА».

    Увеличить

  2. Войдите на тестовый портал ЕСИА (https://esia-portal1.test.gosuslugi.ru).
    Можете воспользоваться учетными данными тестового пользователя: СНИЛС 000-000-600 07, пароль 11111111.

    Увеличить

  3. Предоставьте требуемые права доступа.

    Увеличить

  4. Выберите физическое лицо или организацию, если пользователь привязан к организациям. Для смены организации потребуется повторно войти на портал.

    Увеличить

При успешной аутентификации отобразится личный кабинет с данными, полученными из ЕСИА.

Увеличить

Получение информации о пользователе

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

Увеличить

Чтобы настроить мапперы:
  1. Из списка мапперов выберите тип «ESIA Info Mapper» и заполните поля. Выключите флаги «Add to ID token» и «Add to access token». Включите флаг «Add to userinfo».

    Увеличить

  2. Проверьте работу маппера. Просмотреть значения атрибутов можно с помощью запроса к ресурсу userinfo:
    GET https://{keycloak_ip}:{port}/auth/realms/{realm_name}/protocol/openid-connect/userinfo
    Пример вызова через curl:
    Раскрыть type=sh
    token='eyJhbGciOiJSUzI1NiIsInR5cCIgO...'
    curl -k https://platformauth-dev3.sigma.sbrf.ru:8444/auth/realms/PlatformAuth/protocol/openid-connect/userinfo -H "Authorization: Bearer $token"
    
    Токен доступа (access token) для вызова userinfo на тестовых средах вы можете получить по endpoint https://{proxy_ip_port}/jwt/?access=1. Пример: https://keycloak.dvpaio.novalocal/jwt/?access=1.

Демопримеры

В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Аутентификация
Аутентификация в прикладных приложениях с проверкой JWT токена и присвоением сессии уникального идентификатора
Создание локального JWT токена
Создание JWT токена с настраиваемым набором данных пользователя для аутентификации в прикладных приложениях
Получение данных в ЕСИА
Просмотр данных о пользователе из ЕСИА, полученных при аутентификации
Предыдущий раздел
Ведение базы внутренних пользователей
Следующий раздел
Интеграция с внешним LDAP-каталогом
Была ли страница полезной?