Регистрация расширений авторизации
Docsvision Web-клиент поддерживает авторизацию с помощью сторонних расширений. Необходимые ресурсы для работы расширений авторизации в Web-клиенте поставляются с модулем Платформа.
|
Начиная с модуля Платформа версии 6.1 сборки 832 и выше, поддерживается два настройки расширений авторизации:
|
Настроить расширения можно путём изменения записей в секции menu:"Docsvision"["Platform" > "Server" > "Authentication" > "Extensions"] конфигурационного файла по адресу /usr/lib/docsvision/platform/appsettings.json для Linux и C:\Program Files\Docsvision\Platform\appsettings.json для Windows. Также можно создать отдельный файл формата .json с произвольным названием, указать в нём настройки расширений и поместить файл в каталог-установки-модуля-платформа/config.
Данный раздел посвящён регистрации расширений авторизации в Linux версии системы 6.1 из конфигурационного файла. Создание собственных расширений Docsvision описывается в разделе "Разработка расширений Docsvision" руководства по разработке.
Регистрация расширения Azure
{
"Docsvision": {
"Platform": {
"Server": {
"Authentication": {
"Extensions": {
"AzureAD": {
"Name": "AzureAD", (1)
"TypeName": "DocsVision.Platform.Authentication.AzureAD.AzureADRootAuthenticationExtension, DocsVision.Platform.Authentication.AzureAD, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7148AFE997F90519", (2)
"Settings": "<?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><ClientId>c6c5c5e8-c320-4221-bbdf-205f8ff9610e</ClientId><GroupMembershipCheckerSettings><GroupMappings><AzureADGroupMapping><GroupId>94e14c7f-dbe9-42f4-8895-ac95c3dc8910</GroupId><Role>User</Role></AzureADGroupMapping></GroupMappings></GroupMembershipCheckerSettings><Tenants><guid>94e14c7f-dbe9-42f4-8895-ac95c3dc8910</guid></Tenants><ApplicationId>c6c5c5e8-c320-4221-bbdf-205f8ff9610e</ApplicationId></AzureADAuthenticationSettings>", (3)
"Id": "{D4A9BCC3-E897-47AE-BBA5-8F5085D231E7}" (4)
}
},
"Tenants": { (5)
"CurrentDB": {
"Extensions": "{D4A9BCC3-E897-47AE-BBA5-8F5085D231E7}", (6)
"Name": "CurrentDB" (7)
}
}
}
}
}
}
}
| 1 | Name — задаёт отображаемое имя сервиса аутентификации в справочнике сотрудников. |
| 2 | TypeName — строка с именем типа, реализующего расширение. |
| 3 | Settings — строка настроек расширения, для AzureAD. Подробнее см. ниже. |
| 4 | ID — строка с идентификатором расширения в виде Guid. |
| 5 | Tenants — в параметре указываются расширения аутентификации для конкретных БД Docsvision. |
| 6 | Extensions — строка, содержащая идентификаторы расширений аутентификации для конкретной БД в виде списка Guid через ; (точка с запятой). |
| 7 | Name — строка, содержащая псевдоним БД, например: CurrentDB. |
Строка настроек 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. Редактирование значения для параметра "Name"
|
-
Компания должна быть зарегистрирована в ЕСИА.
-
Необходимо получить сертификат для работы с ЕСИА. Можно использовать неперсонифицированный сертификат.
-
Сертификат с открытым ключом необходимо добавить на портале ЕСИА.
-
Необходимо скачать сертификат площадки, которая подписывает токены esia.zip (архив содержит сертификаты тестовой и рабочей площадок).
-
Необходимо выполнить обязательные настройки на сервере Docsvision:
-
Установить КриптоПро CSP 5.0 и выше.
-
Установить сертификат для работы с ЕСИА. Для этого можно воспользоваться утилитой certmgr, входящей в состав КриптоПро CSP 5.0, например так:
sudo /opt/cprocsp/bin/amd64/certmgr -install -file путь-к-файлу-сертификата -pfx -pin пин-код (1) sudo -u docsvision bash (2) /opt/cprocsp/bin/amd64/certmgr -install -file путь-к-файлу-сертификата -pfx -pin пин-код1 По умолчанию служба Сервера Docsvision работает от имени привилегированного пользователя, поэтому сертификат необходимо устанавливать с повышением привилегий. 2 Переключиться на пользователя docsvision для службы Web-клиента. -
Установите сертификат площадки из архива esia.zip в хранилище пользователей, под которыми запускаются службы Сервера Docsvision и Web-клиента. Сертификат тестовой площадки —
TESIA GOST 2012 new.cer, например, так:sudo /opt/cprocsp/bin/amd64/certmgr -install -file путь-к-файлу-TESIA-GOST-2012-new.cer (1) sudo -u docsvision bash (2) /opt/cprocsp/bin/amd64/certmgr -install -file путь-к-файлу-TESIA-GOST-2012-new.cer1 С повышением привилегий пользователя. 2 Переключиться на пользователя docsvision для службы Web-клиента. -
Добавьте настройки для аутентификации через ЕСИА в конфигурационный файл модуля Платформа.
Расширение аутентификации для ЕСИА настраивается по аналогии с Azure, за исключением параметра
Settings— строки настроек расширения. Строка настроек для ЕСИА описана ниже.
-
{
"DocsVision": {
"Platform": {
"Server": {
"Authentication": {
"Extensions": {
"ESIA": {
"Id": "{DC3A3469-1B9C-4281-A5EA-ECEEF5A34C35}", (1)
"Name": "ЕСИА", (2)
"TypeName": "DocsVision.Platform.Authentication.ESIA.ESIARootAuthenticationExtension, DocsVision.Platform.Authentication.ESIA, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7148AFE997F90519", (3)
"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\",\"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\"],\"issuer\":\"http://esia-portal1.test.gosuslugi.ru/\",\"microsoft_multi_refresh_token\":true,\"authorization_endpoint\":\"https://esia-portal1.test.gosuslugi.ru/aas/oauth2/v2/ac\",\"device_authorization_endpoint\":\"\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://esia-portal1.test.gosuslugi.ru/idp/ext/Logout\",\"claims_supported\":[],\"check_session_iframe\":\"\",\"userinfo_endpoint\":\"https://esia-portal1.test.gosuslugi.ru/rs/prns/\",\"kerberos_endpoint\":\"\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"\",\"cloud_graph_host_name\":\"\",\"msgraph_host\":\"\",\"rbac_url\":\"\",\"certificate_hash\":\"B6864B005BE2E583733DAC88CC00AF1D98EE286B4E98CD7ECA03930AB303B76B\", \"certificate_thumbprint\":\"39D17F90BC7EA873566A1CCF1E36C23DCFFA5025\",\"certificate_password\":\"P@ssw0rd\",\"ext_certificate_thumbprint\":\"9c8393817199de4364ef7569f1af8c40b120f0f7\"}</WellKnownConfigurationUrl><ClientId>DOCSVISION</ClientId><Tenants></Tenants><AccountNameClaim>snils</AccountNameClaim><ApplicationId></ApplicationId></ESIAAuthenticationSettings>" (4)
}
},
"Tenants": { (5)
"docsvisionDB": {
"Extensions": "{DC3A3469-1B9C-4281-A5EA-ECEEF5A34C35}", (6)
"Name": "docsvisionDB" (7)
}
}
}
}
}
}
}
| 1 | ID — строка с идентификатором расширения в виде Guid. |
| 2 | Name — задаёт отображаемое имя сервиса аутентификации в справочнике сотрудников. |
| 3 | TypeName — строка с именем типа, реализующего расширение. |
| 4 | Settings — строка настроек расширения, для ЕСИА. Подробнее см. ниже. |
| 5 | Tenants — в параметре указываются расширения аутентификации для конкретных БД Docsvision. |
| 6 | Extensions — строка, содержащая идентификаторы расширений аутентификации для конкретной БД в виде списка Guid через ; (точка с запятой). |
| 7 | Name — строка, содержащая псевдоним БД, например: docsvisionDB. |
В зависимости от того, что указано в настройках: СНИЛС, телефон или почта, в справочнике сотрудников Web-клиента, на вкладке "Безопасность" для способа аутентификации ЕСИА отображается соответствующее поле ввода.
Телефон или почта для входа в учётную запись ЕСИА могут не совпадать с указанными в карточке сотрудника. Данные для входа на сайт "Госуслуги" указываются в секции .
После изменения параметра в конфигурационном файле необходимо перезапустить службы Сервера Docsvision и Web-клиента.
Строка настроек для ЕСИА
В примере ниже строка настроек приведена в отформатированном виде для удобства чтения. Данный фрагмент кода не предназначен для копирования в конфигурационный файл.
<?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
{
"Docsvision": {
"Platform": {
"Server": {
"Authentication": {
"Extensions": {
"ADFS": {
"Name": "ADFS", (1)
"TypeName": "DocsVision.Platform.Authentication.ADFS.ADFSRootAuthenticationExtension, DocsVision.Platform.Authentication.ADFS, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7148AFE997F90519", (2)
"Settings": "<?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://551releaseVM.vmkh.org/adfs/.well-known/openid-configuration</WellKnownConfigurationUrl><ClientId>8d4612ab-c258-4f0b-ba02-d6aeab59debd</ClientId></ADFSAuthenticationSettings>", (3)
"Id": "{36351525-8FCE-48AB-8AD3-4C1FA575FF23}" (4)
}
},
"Tenants": { (5)
"docsvision-db": {
"Extensions": "{36351525-8FCE-48AB-8AD3-4C1FA575FF23}", (6)
"Name": "CurrentDB" (7)
}
}
}
}
}
}
}
| 1 | Name — задаёт отображаемое имя сервиса аутентификации в справочнике сотрудников. |
| 2 | TypeName — строка с именем типа, реализующего расширение. |
| 3 | Settings — строка настроек расширения, для AzureAD. Подробнее см. ниже. |
| 4 | ID — строка с идентификатором расширения в виде Guid. |
| 5 | Tenants — в параметре указываются расширения аутентификации для конкретных БД Docsvision. |
| 6 | Extensions — строка, содержащая идентификаторы расширений аутентификации для конкретной БД в виде списка Guid через ; (точка с запятой). |
| 7 | Name — строка, содержащая псевдоним БД, например: CurrentDB. |
Строка настроек для 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
|
{
"Docsvision": {
"Platform": {
"Server": {
"Authentication": {
"Extensions": {
"Keycloak": {
"Name": "Keycloak", (1)
"TypeName": "DocsVision.Platform.Authentication.Keycloak.KeycloakRootAuthenticationExtension, DocsVision.Platform.Authentication.Keycloak, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7148AFE997F90519", (2)
"Settings": "<?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://example.domain.com/realms/testDv/.well-known/openid-configuration</WellKnownConfigurationUrl><ClientId>test</ClientId><Secret>JwIcDLOLEATB2R69bZac9BMHpzC8Px0P</Secret><AccountNameClaim>http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress</AccountNameClaim><UniqueIdClaim>DocsvisionID</UniqueIdClaim><ScopesSupported>openid email</ScopesSupported></KeycloakAuthenticationSettings>", (3)
"Id": "{735EE1ED-F0D1-4D1B-90B0-B48D73BF49C0}" (4)
}
},
"Tenants": { (5)
"CurrentDB": {
"Extensions": "{735EE1ED-F0D1-4D1B-90B0-B48D73BF49C0}", (6)
"Name": "CurrentDB" (7)
}
}
}
}
}
}
}
| 1 | Name — задаёт отображаемое имя сервиса аутентификации в справочнике сотрудников. |
| 2 | TypeName — строка с именем типа, реализующего расширение. |
| 3 | Settings — строка настроек расширения, для Keycloak. Подробнее см. ниже. |
| 4 | ID — строка с идентификатором расширения в виде Guid. |
| 5 | Tenants — в параметре указываются расширения аутентификации для конкретных БД Docsvision. |
| 6 | Extensions — строка, содержащая идентификаторы расширений аутентификации для конкретной БД в виде списка Guid через ; (точка с запятой). |
| 7 | Name — строка, содержащая псевдоним БД, например: CurrentDB. |
Строка настроек 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://example.domain.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 — имя поля в токене, значение которого используется в качестве неизменяемого уникального идентификатора пользователя. В примере используется поле DocsvisionID. Для такой настройки необходимо создать соответствующий атрибут пользователя в Keycloak, заполнить его и настроить передачу в токен. Если идентификатор передаётся в другом поле, укажите имя этого поля. |
| 6 | ScopesSupported — при загрузке расширения список областей доступа берется из конфигурации KeyCloak, указанной в параметре WellKnownConfigurationUrl. Если есть необходимость переопределить список областей доступа, передаваемых в запросе, можно добавить секцию ScopesSupported и в неё через пробел указать необходимые области для работы. |
При обработке токена имена некоторых стандартных полей автоматически преобразуются в URI. В AccountNameClaim и UniqueIdClaim необходимо указывать имена после преобразования.
Например, для получения логина из поля email в AccountNameClaim укажите http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress. Для получения уникального идентификатора из поля sub в UniqueIdClaim укажите http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier.
Имена полей, для которых преобразование не предусмотрено, указываются без изменений. Например, для поля preferred_username в AccountNameClaim указывается preferred_username.
Имена пользовательских полей, для которых преобразование не предусмотрено, указываются без изменений. Например, для DocsvisionID в UniqueIdClaim указывается DocsvisionID.
В параметры подставляются имена полей, а не их значения. Например, если поле email содержит адрес user@example.com, в AccountNameClaim указывается URI для поля email, а в качестве логина используется адрес user@example.com.
Регистрация расширения IdentityBlitz
| Для работы расширения авторизации IdentityBlitz требуется опция лицензии Docsvision Коннектор к Blitz Identity Provider. |
Docsvision с модулями, входящими в Регулярный патч ТП 26.20, позволяет активировать сопоставление групп пользователей Docsvision и групп внешнего провайдера IdentityBlitz. Коннектор к IdentityBlitz требует выполнить описанные ниже настройки, чтобы обеспечить автоматическое сопоставление прав доступа в Docsvision и внешних групп пользователей IdentityBlitz.
-
Для IdentityBlitz учитываются только группы, которые расширение получило для пользователя.
-
Вложенные группы и членство через родительские или дочерние группы не учитываются, так как в IdentityBlitz не поддерживаются вложенные группы.
-
Одну группу Docsvision нельзя одновременно сопоставить с группой Active Directory и группой IdentityBlitz.
{
"Docsvision": {
"Platform": {
"Server": {
"Authentication": {
"Extensions": {
"IdentityBlitz": {
"Id": "{A2EF8179-4501-469C-A0A4-76D928CCA50A}", (1)
"Name": "IdentityBlitz", (2)
"Settings": "<?xml version=\"1.0\" encoding=\"utf-16\"?><IdentityBlitzAuthenticationSettings xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><WellKnownConfigurationUrl>https://vdv-blitz.digdes.com/blitz/.well-known/openid-configuration</WellKnownConfigurationUrl><ClientId>test</ClientId><Secret>JwIcDLOLEATB2R69bZac9BMHpzC8Px0P</Secret><AccountNameClaim>http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier</AccountNameClaim><UniqueIdClaim>DocsvisionID</UniqueIdClaim><ScopesSupported>openid profile</ScopesSupported><ResponseType>code</ResponseType><GroupsProfile>dvio</GroupsProfile><GroupsApiBaseUrl>https://vdv-blitz.digdes.com/blitz/api/v3</GroupsApiBaseUrl></IdentityBlitzAuthenticationSettings>", (3)
"TypeName": "DocsVision.Platform.Authentication.IdentityBlitz.IdentityBlitzRootAuthenticationExtension, DocsVision.Platform.Authentication.IdentityBlitz, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7148AFE997F90519" (4)
}
},
"Tenants": { (5)
"CurrentDB": {
"Extensions": "{A2EF8179-4501-469C-A0A4-76D928CCA50A}", (6)
"Name": "CurrentDB" (7)
}
}
}
}
}
}
}
| 1 | ID — идентификатор расширения в виде Guid. |
| 2 | Name — задаёт отображаемое имя сервиса аутентификации в справочнике сотрудников. |
| 3 | Settings — строка настроек расширения, для IdentityBlitz. Подробнее см. ниже. |
| 4 | TypeName — имя типа, реализующего расширение. |
| 5 | Tenants — в параметре указываются расширения аутентификации для конкретных БД Docsvision. |
| 6 | Extensions — в параметре указывается идентификаторы расширений аутентификации для конкретной БД в виде списка Guid через ; (точка с запятой). |
| 7 | Name — в параметре указывается псевдоним БД, например: CurrentDB. |
Настройка аутентификации с использованием коннектора к IdentityBlitz
-
Запустите сервис IdentityBlitz, создайте приложение и укажите необходимые настройки приложения. Конфигурация IdentityBlitz выходит за рамки документации Docsvision.
-
Укажите настройки коннектора IdentityBlitz предпочитаемым способом:
-
Откройте Консоль управления Docsvision на странице , перейдите к группе настроек Расширенная аутентификация и нажмите кнопку Добавить расширение и заполните необходимые поля, описание полей приведено в документации Консоли управления Docsvision, раздел "Настройка расширений аутентификации". В поле Настройки укажите строку настроек IdentityBlitz.
-
Укажите настройки в конфигурационном файле Сервера приложений.
-
-
Перезапустите службы Сервера приложений и Web-клиента.
-
Зайдите в Web-клиент от имени УЗ администратора.
-
В Справочнике сотрудников для пользователей, которые будут входить через коннектор, на вкладке Безопасность укажите уникальный идентификатор пользователей из IdentityBlitz.
-
Перезапустите службу Web-клиента. Пользователи смогут входить в Web-клиент с использованием IdentityBlitz только после перезапуска.
После изменения состава группы в IdentityBlitz пользователи должны выйти из Docsvision и войти повторно. Изменения применяются при создании новой сессии.
Настройка сопоставления групп с использованием коннектора к IdentityBlitz
-
Чтобы работало сопоставление групп IdentityBlitz и Docsvision, создайте группу в IdentityBlitz и в Docsvision либо используйте существующие.
-
В Docsvision перейдите к настройкам групп. В поле Учётная запись (поле доступно в справочнике сотрудников в Windows-клиенте) укажите идентификаторы групп из IdentityBlitz.
Указывайте только идентификаторы, не используйте имена групп. -
Также для работы внешних групп необходимо в БД включить настройку RoleModel_ExternalGroupsSupportEnabled:
Microsoft SQL:declare @on bit =1 exec dvsys_setting_set N'RoleModel_ExternalGroupsSupportEnabled', @onPostgreSQL:select * from dvsys_setting_set('RoleModel_ExternalGroupsSupportEnabled', true::sql_variant);Пользователь получает права сопоставленной группы Docsvision без ручного добавления в её состав. Фактический состав группы в Справочнике сотрудников не изменяется. При проверке прав учитывается как обычное членство пользователя, так и членство, полученное из IdentityBlitz.
-
Назначьте группе Docsvision роль или право, войдите через IdentityBlitz и убедитесь, что доступ настроен корректно.
Настройки ролевой модели безопасности выполняются в Docsvision.
<?xml version=\"1.0\" encoding=\"utf-16\"?>
<IdentityBlitzAuthenticationSettings
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
<WellKnownConfigurationUrl>https://vdv-blitz.digdes.com/blitz/.well-known/openid-configuration</WellKnownConfigurationUrl> (1)
<ClientId>test</ClientId> (2)
<Secret>JwIcDLOLEATB2R69bZac9BMHpzC8Px0P</Secret> (3)
<AccountNameClaim>http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier</AccountNameClaim> (4)
<UniqueIdClaim>DocsvisionID</UniqueIdClaim> (5)
<ScopesSupported>openid profile</ScopesSupported> (6)
<ResponseType>code</ResponseType> (7)
<GroupsProfile>dvio</GroupsProfile> (8)
<GroupsApiBaseUrl>https://vdv-blitz.digdes.com/blitz/api/v3</GroupsApiBaseUrl> (9)
</IdentityBlitzAuthenticationSettings>
| 1 | WellKnownConfigurationUrl — URL публичной конфигурации OpenID. |
| 2 | ClientId — идентификатор приложения IdentityBlitz в котором производится привязка пользователей. |
| 3 | Secret — секрет приложения, настроенного для аутентификации пользователей. |
| 4 | AccountNameClaim — имя поля в токене, значение которого используется в качестве логина. Указывается имя поля, а не логин конкретного пользователя. |
| 5 | UniqueIdClaim — имя поля в токене, значение которого используется в качестве неизменяемого уникального идентификатора пользователя. В примере используется поле DocsvisionID. Для такой настройки необходимо создать соответствующий атрибут пользователя в IdentityBlitz, заполнить его и настроить передачу в токен. Если идентификатор передаётся в другом поле, укажите имя этого поля. |
| 6 | ScopesSupported — при загрузке расширения список областей доступа берется из конфигурации IdentityBlitz, указанной в параметре WellKnownConfigurationUrl. Если есть необходимость переопределить список областей доступа, передаваемых в запросе, можно добавить секцию ScopesSupported и в неё через пробел указать необходимые области для работы. |
| 7 | ResponseType — определяет способ получения токенов при входе. Значение code включает Authorization Code Flow: после входа провайдер возвращает код авторизации, который приложение обменивает на токены. |
| 8 | GroupsProfile — имя профиля групп в IdentityBlitz. Профиль объединяет группы, с которыми нужно работать. |
| 9 | GroupsApiBaseUrl — базовый адрес REST API IdentityBlitz, через который расширение получает сведения о группах. |
При обработке токена имена некоторых стандартных полей автоматически преобразуются в URI. В AccountNameClaim и UniqueIdClaim необходимо указывать имена после преобразования.
В приведённом примере для AccountNameClaim используется поле sub, в настройках указано http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier. Если в качестве логина используется поле email, в AccountNameClaim укажите http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress. При этом необходимо настроить передачу email провайдером.
Имена полей, для которых преобразование не предусмотрено, указываются без изменений. Например, для поля preferred_username в AccountNameClaim указывается preferred_username.
Имена пользовательских полей, для которых преобразование не предусмотрено, указываются без изменений. Например, для DocsvisionID в UniqueIdClaim указывается DocsvisionID.
В параметры подставляются имена полей, а не их значения. Приведённые URI используются как имена полей, открывать их в браузере не требуется.