Расширенная аутентификация

Docsvision Web-клиент поддерживает авторизацию с помощью сторонних расширений. Необходимые ресурсы для работы расширений авторизации в Web-клиенте поставляются с модулем Платформа и настраиваются в конфигурационном файле модуля или в Консоли управления Docsvision.

Поддерживается вход при помощи следующих учётных записей:
  • Microsoft Azure

  • Active Directory Federation Services (ADFS)

  • ЕСИА (Госуслуги) по почте, номеру телефона, номеру СНИЛС

  • Данный раздел посвящён регистрации расширений авторизации в Linux с помощью Консоли управления Docsvision версии 6.2.

  • Создание собственных расширений Docsvision описывается в разделе "Разработка расширений Docsvision" руководства по разработке.

  • Настройка расширений в конфигурационном файле модуля Платформа описана в разделе "Регистрация расширений авторизации".

Для настройки расширений аутентификации необходимо установить расширение модуля Платформа для консоли управления, см. "Установка расширений модулей для Консоли управления Docsvision". Если расширение не установлено, на странице будет отображаться сообщение об отсутствии компонентов редактирования, оформленное красным текстом.

Настройка расширений аутентификации

Таблица зарегистрированных расширений аутентификации
Рисунок 1. Таблица зарегистрированных расширений аутентификации

Настроить расширения[1] можно на странице Серверы  Имя-сервера  Сервер приложений  Расширенная аутентификация.

Чтобы добавить расширение, необходимо:
  1. Откройте Консоль управления Docsvision на странице "Расширенная аутентификация" нажмите кнопку Добавить расширение.

    При переходе на страницу настроек расширения аутентификации выводится сообщение с кнопками Ок и Отмена. При нажатии Ок несохранённые изменения на странице будут применены, при нажатии Отмена — отменены.

  2. На странице настроек расширения представлены следующие поля:

    • Идентификатор расширения — строка с идентификатором расширения в виде Guid. Идентификатор определяется при разработке расширения. Параметр Id в конфигурационном файле расширения.

    • Название расширения — задаёт отображаемое имя сервиса аутентификации. Отображается в справочнике сотрудников.

      Регистрация нового расширения аутентификации
      Рисунок 2. Регистрация нового расширения аутентификации
    • Настройки — строка настроек расширения в неотформатированном виде. Подробнее см. ниже, например ЕСИА.

    • Тип — строка с именем типа, реализующего расширение. Параметр TypeName в конфигурационном файле расширения.

Настройка расширений для тенантов

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

Активация зарегистрированных расширений аутентификации
Рисунок 3. Активация зарегистрированных расширений аутентификации

В таблице отображается список расширений, которые были зарегистрированы в системе и настроены. Над таблицей отображается название базы данных. Для базы, которая назначена по умолчанию, добавляется тэг "БД по умолчанию".

Строка настроек Azure

В примере ниже строка настроек приведена в отформатированном виде для удобства чтения. Данный фрагмент кода не предназначен для копирования.

<?xml version="1.0" encoding="utf-16"?>
<AzureADAuthenticationSettings
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <WellKnownConfigurationUrl>https://login.microsoftonline.com/common/.well-known/openid-configuration</WellKnownConfigurationUrl> (1)
  <ClientId>c6c5c5e8-c320-4221-bbdf-205f8ff9610e</ClientId> (2)
  <GroupMembershipCheckerSettings>
    <GroupMappings>
      <AzureADGroupMapping> (3)
        <GroupId>94e14c7f-dbe9-42f4-8895-ac95c3dc8910</GroupId> (4)
        <Role>User</Role> (5)
      </AzureADGroupMapping>
    </GroupMappings>
  </GroupMembershipCheckerSettings>
  <Tenants>
    <guid>94e14c7f-dbe9-42f4-8895-ac95c3dc8910</guid>
  </Tenants>
  <ApplicationId>c6c5c5e8-c320-4221-bbdf-205f8ff9610e</ApplicationId> (6)
</AzureADAuthenticationSettings>",
1 WellKnownConfigurationUrl — URL публичной конфигурации OpenID.
2 ClientId — идентификатор тенанта AzureAD в котором производится привязка пользователей.
3 AzureADGroupMapping — задает сопоставление групп Azure AD системным группам безопасности Docsvision. Допускается на одну группу Azure AD создавать несколько групп Docsvision.
4 GroupId — идентификатор группы Azure AD.
5 Role — имя группы без префикса "Docsvision".
6 ApplicationId — идентификатор приложения Docsvision, зарегистрированного в тенанте AzureAD, для которого включено и настроено использование OpenID Connect.

Регистрация расширения ЕСИА

Требования для расширения ЕСИА:
  1. Компания должна быть зарегистрирована в ЕСИА.

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

  3. Сертификат с открытым ключом необходимо добавить на портале ЕСИА.

  4. Необходимо скачать сертификат площадки, которая подписывает токены esia.zip (архив содержит сертификаты тестовой и рабочей площадок).

  5. Необходимо выполнить обязательные настройки на сервере Docsvision:

    1. Установить КриптоПро CSP 5.0 и выше.

    2. Установить сертификат для работы с ЕСИА. Для этого можно воспользоваться утилитой certmgr, входящей в состав КриптоПро CSP 5.0, например так:

      sudo /opt/cprocsp/bin/amd64/certmgr -install -file путь-к-файлу-сертификата -pfx -pin пин-код (1)
      1 По умолчанию служба Сервера Docsvision работает от имени привилегированного пользователя, поэтому сертификат необходимо устанавливать с повышением привилегий.
    3. Установить сертификат площадки из архива esia.zip. Сертификат тестовой площадки — TESIA GOST 2012.cer/ Например, так:

      sudo /opt/cprocsp/bin/amd64/certmgr -install -file путь-к-файлу-TESIA-GOST-2012.cer (1)
      1 С повышением привилегий пользователя.
    4. Добавить настройки для аутентификации через ЕСИА на страницу Консоли управления Docsvision.

      Расширение аутентификации для ЕСИА настраивается по аналогии с Azure за исключением параметра Settings — строки настроек расширения. Строка настроек для ЕСИА описана ниже.

Строка настроек для ЕСИА

В примере ниже строка настроек приведена в отформатированном виде для удобства чтения. Данный фрагмент кода не предназначен для копирования.

<?xml version=\"1.0\" encoding=\"utf-16\"?>
<ESIAAuthenticationSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema\" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance\">
<WellKnownConfigurationUrl>{
\"token_endpoint\":\"https://esia-portal1.test.gosuslugi.ru/aas/oauth2/v3/te\", (1)
\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],
\"jwks_uri\":\"\",
\"response_modes_supported\":[],
\"subject_types_supported\":[],\"id_token_signing_alg_values_supported\":[],
\"response_types_supported\":[\"code\",\"token\"],
\"scopes_supported\":[\"openid email mobile snils fullname id_doc\"], (2)
\"issuer\":\"http://esia-portal1.test.gosuslugi.ru/\", (3)
\"microsoft_multi_refresh_token\":true,
\"authorization_endpoint\":\"https://esia-portal1.test.gosuslugi.ru/aas/oauth2/v2/ac\", (4)
\"device_authorization_endpoint\":\"\",
\"http_logout_supported\":true,
\"frontchannel_logout_supported\":true,
\"end_session_endpoint\":\"https://esia-portal1.test.gosuslugi.ru/idp/ext/Logout\", (5)
\"claims_supported\":[],
\"check_session_iframe\":\"\",
\"userinfo_endpoint\":\"https://esia-portal1.test.gosuslugi.ru/rs/prns/\", (6)
\"kerberos_endpoint\":\"\",
\"tenant_region_scope\":null,
\"cloud_instance_name\":\"\",
\"cloud_graph_host_name\":\"\",
\"msgraph_host\":\"\",
\"rbac_url\":\"\",
\"certificate_hash\":\"B6864B005BE2E583733DAC88CC00AF1D98EE286B4E98CD7ECA03930AB303B76B\", (7)
\"certificate_thumbprint\":\"39D17F90BC7EA873566A1CCF1E36C23DCFFA5025\", (8)
\"certificate_password\":\"Password\", (9)
\"ext_certificate_thumbprint\":\"9c8393817199de4364ef7569f1af8c40b120f0f7\", (10)
}
</WellKnownConfigurationUrl>
<ClientId>DOCSVISION</ClientId> (11)
<Tenants></Tenants>
<AccountNameClaim>snils</AccountNameClaim> (12)
<ApplicationId></ApplicationId>
</ESIAAuthenticationSettings>
1 token_endpoint — URL для получения маркера доступа.
2 scopes_supported — область доступа, т.е. запрашиваемые права.
3 issuer — идентификатор стороны, генерирующей токен.
4 authorization_endpoint — URL для получения авторизационного кода.
5 end_session_endpoint — URL для выхода из учётной записи из ЕСИА.
6 userinfo_endpoint — URL для получения данных пользователя.
7 certificate_hash — хэш сертификата получаемый через утилиту cpverify.
8 certificate_thumbprint — отпечаток сертификата, используемого для формирования подписи.
9 certificate_password — пароль сертификата для работы с ЕСИА. Пароль обычно устанавливается при импорте файла .pfx в Linux. Если пароль на сертификат не установлен, этот параметр можно удалить.
10 ext_certificate_thumbprint — отпечаток сертификата площадки. Можно посмотреть при выполнении sudo /opt/cprocsp/bin/amd64/certmgr -list.
11 ClientId — мнемоника системы получаемая при регистрации.
12 AccountNameClaim — параметр, который используется как ключ для авторизации. Возможные значения: snils, phone, email.

Ошибки при авторизации ЕСИА

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

[Error][DocsVision.Platform.WebClient.Diagnostics.Trace.TraceError] System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
  ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot

Для исправления ошибки на сервере Docsvision необходимо установить корневой сертификат удостоверяющего центра, выдавшего сертификат портала ЕСИА. Корневой сертификат должен быть в формате PEM с расширением файла .crt. Установить сертификат можно поместив его в папку /usr/local/share/ca-certificates/, после чего необходимо будет выполнить команду:

sudo update-ca-certificates -v -f.

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

Строка настроек для ADFS

В примере ниже строка настроек приведена в отформатированном виде для удобства чтения. Данный фрагмент кода не предназначен для копирования.

<?xml version="1.0" encoding="utf-16"?>
<ADFSAuthenticationSettings
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <WellKnownConfigurationUrl>https://domain.company.com/adfs/.well-known/openid-configuration</WellKnownConfigurationUrl> (1)
  <ClientId>8d4612ab-c258-4f0b-ba02-d6aeab59debd</ClientId> (2)
</ADFSAuthenticationSettings>
1 WellKnownConfigurationUrl — URL публичной конфигурации ADFS.
2 ClientId — идентификатор тенанта ADFS в котором производится привязка пользователей.

Строка настроек Keycloak

Для работы расширения авторизации Keycloak требуется опция лицензии Docsvision Коннектор к Keycloak.

В примере ниже строка настроек приведена в отформатированном виде для удобства чтения. Данный фрагмент кода не предназначен для копирования.

<?xml version=\"1.0\" encoding=\"utf-16\"?>
  <KeycloakAuthenticationSettings
    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
    <WellKnownConfigurationUrl>https://vdv-keycloak.digdes.com/realms/testDv/.well-known/openid-configuration</WellKnownConfigurationUrl> (1)
    <ClientId>test</ClientId> (2)
    <Secret>JwIcDLOLEATB2R69bZac9BMHpzC8Px0P</Secret> (3)
    <AccountNameClaim>http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress</AccountNameClaim> (4)
    <UniqueIdClaim>DocsvisionID</UniqueIdClaim> (5)
    <ScopesSupported>openid email</ScopesSupported> (6)
</KeycloakAuthenticationSettings>
1 WellKnownConfigurationUrl — URL публичной конфигурации OpenID.
2 ClientId — идентификатор тенанта Keycloak в котором производится привязка пользователей.
3 Secret — секрет приложения, настроенного для аутентификации пользователей.
4 AccountNameClaim — имя пользователя в токене (поле в токене, используемое в качестве логина).
5 UniqueIdClaim — уникальный идентификатор пользователя в токене.
6 ScopesSupported — при загрузке расширения список областей доступа берется из конфигурации KeyCloak, указанной в параметре WellKnownConfigurationUrl. Если есть необходимость переопределить список областей доступа, передаваемых в запросе, можно добавить секцию ScopesSupported и в неё через пробел указать необходимые области для работы.

1. Аналогичный параметр в конфигурационном файле модуля Платформа — "Authentication".