The Magician

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
двухфакторная_авторизация_в_веб_с_indeed_idp [2026/10/30 10:06] – removed - external edit (Unknown date) 127.0.0.1двухфакторная_авторизация_в_веб_с_indeed_idp [2026/10/30 10:06] (current) – ↷ Page name changed from двухфакторная_авторизация_в_веб_с_indeed_am_idp to двухфакторная_авторизация_в_веб_с_indeed_idp jp
Line 1: Line 1:
 +===== Двухфакторная авторизация в веб с Indeed IDP =====
  
 +//CGP// поддерживает настройку второго фактора для входа через веб-интерфейс или //CommuniGate Desktop// клиент. Решение позволяет добавлять какие-либо аунтентификаторы, вроде //Google Authenticator//, //Indeed Key// и т.д.
 +
 +Но что, если нам необходимо интегрировать решение с корпоративным сервером //Indeed AM//, ключи которого управляются централизованно?
 +
 +Реализовать это можно через связку: плагин //OpenID Connect login// (на стороне CGP) + модуль //Indeed IDP// (на стороне Indeed AM, соответственно). Реализацию данной связки я и опишу по этапам. 
 +
 +В этом варианте настройки авторизация будет происходить так: 
 +
 +1. //Indeed IDP// запрашивает пароль пользователя (AD) \\
 +2.  //Indeed IDP// запрашивает подтверждение //Indeed Key// \\
 +3. Происходит редирект в пользовательский веб-интерфейс //CGP//.
 +
 +==== Устанавливаем и настраиваем плагин OpenID Connect login  ====
 +
 +1. Качаем плагин "OpenID" со страницы CGP: https://communigatepro.ru/plugins#autorization
 +
 +2. Через веб-интерфейс администратора CGP устанавливаем плагин  (в разделе //Users -> Plugins//) и пока оставляем в состоянии //disabled//. 
 +
 +3. У нас ещё нет настроенного модуля //Indeed IDP//, но мы уже можем прописать настройки заранее. Сделаем это. 
 +
 +=== Authorization Endpoint ===
 +
 +  https://indeedam.domain.ru/am/idp/connect/authorize
 +
 +=== Token Verification Endpoint ===
 +  
 +  https://indeedam.domain.ru/am/idp/connect/token
 +
 +=== Client ID ===
 +
 +Произвольный, к примеру:
 +
 +  communigate
 +
 +=== Client Secret ===
 +
 +Придумываем какой-либо секретный код, который потребуется указать затем в конфиге //Indeed IDP//.
 +
 +=== Support domain aliases ===
 +
 +Полезной настройкой также будет: //Support domain aliases//, если мы захотим логиниться в //Indeed// с помощью учётной записи, логин которой не принадлежит основным доменам //CGP//, а принадлежит только алиасам. 
 +Пример такого случая: мы логинился в //IDP// через пользователя //AD//, используя //primary email//, но в //CGP// нет такого основного домена (только алиас). В этом случае, если не отметить опцию //Support domain aliases// - получим в //CGP// ошибку, вроде //unknown local domain// после авторизации. 
 +
 +4. Повторяем пункты 1-3 для каждого сервера //CGP//, если у нас их несколько. 
 +
 +Пример настроенного  плагина.
 +
 +{{:communigate:cgp_oid_plugin.jpg|}}
 +
 +==== Устанавливаем и настраиваем модуль Indeed IDP  ====
 +
 +1. На серверах //Indeed AM// запускаем установку модуля из дистртибутива:
 +
 +  Indeed AM 8.2.12\Indeed AM IDP\8.2.10\IndeedAM.IDP-v8.2.10-en-us-x64.msi
 +
 +:!: Если у нас есть работающий сервер //Indeed AM// с установленным сертификатом, отказываемся в конце установки от предложения сгенерировать новый серверный сертификат для //IDP//.
 +
 +2. После установки модуля //IDP// необходимо выдать права пулу //IIS// для чтения закрытого ключа сертификата, под которым работают SSL-привязки сайта //Indeed AM//.
 +
 +Открываем оснастку управления сертификатами, находим нужный сертификат, далее открываем //управление закрытыми ключами// и добавляем учётку пула //вручную// указывая следующую учетную запись (мы не обнаружим её в списках учётных записей):
 +
 +  IIS AppPool\IndeedAM.IDP
 +Корректная настройка прав на закрытый ключ выглядит примерно так:
 +
 +;#;
 +{{:cgp:indeedamidppoolcert.jpg|}}
 +;#;
 +
 +
 +3. Теперь идем в оснастку управления //IIS -> Default Web Site -> AM -> IDP// и настраиваем корректные методы проверки подлинности для сайта //IDP//.
 +
 +В нем должна быть включена //анонимная проверка подлинности// и отключены остальные.
 +
 +Пример корректной настройки:
 +
 +;#;
 +{{:cgp:indeedamidpauthsettings.jpg|}}
 +;#;
 + 
 +4. Время переходить к настройкам модуля //IDP//. Они находятся в следующем файле:
 +
 +  C:\inetpub\wwwroot\am\idp\app-settings.json
 +Указываем ссылку на Indeed AM Core, секция:
 +
 +<code>
 +  "AuthenticationServer": {
 +    "Url": "https://indeedam.domain.ru/am/core/",
 +    "IsIgnoreCertErrors": false
 +  },
 +</code>
 +
 +Если мы хотим последовательно входить по //Windows Password// + //Indeed Key//, вычищаем всё лишнее и оставляем ТОЛЬКО такие провайдеры в одном методе (если сделать в разных - при попытке войти будет предоставлен ВЫБОР - какой провайдер использовать, т.е. лишь один фактор). Вся секция //AuthenticationMethods// с нужными ID провайдеров:
 +<code>
 +    "AuthenticationMethods": [
 +   {
 +    "Name": "IndeedKey",
 +    "Providers": [
 +   "CF189AF5-01C5-469D-A859-A8F2F41ED153",
 +          "DEEF0CB8-AD2F-4B89-964A-B6C7ECA80C68"
 +    ]
 + }
 +    ],
 +</code>
 +
 +Указываем URL //Indeed Log Server//, вся секция:
 +
 +<code>
 + "LogServer": {
 +    "AppId": "ea",
 +    "Component": "server",
 +    "EventCache": {
 +      "Directory": "./EventCache",
 +      "SendingIntervalSec": 600
 +    },
 +    "Server": {
 +      "Url": "https://indeedam.domain.ru/ls/api/",
 +      "Certificate": {
 +        "Thumbprint": "",
 +        "FilePath": "",
 +        "FilePassword": ""
 +      }
 +    },
 +    "DetailsSettings": {
 +      "CatalogObjectField": "Name",
 +      "ComputerField": "Ip"
 +    }
 +   },
 +</code>
 +
 +
 +Правим //URL// и отпечаток сертификата на нужные в секции //SAML//:
 +
 +<code>
 + "SAML": {
 +    "$schema": "https://www.componentspace.com/schemas/saml-config-schema-v1.0.json",
 +    "Configurations": [
 +      {
 +        "LocalIdentityProviderConfiguration": {
 +          "Name": "urn:indeedid:saml_idp",
 +          "SingleSignOnServiceUrl": "https://indeedam.domain.ru/am/idp/Account/SsoService",
 +          "LocalCertificates": [
 +            {
 +              "Thumbprint": "e057b052c98d11f12216e7fda990adca09b387db"
 +            }
 +          ]
 +        },
 +</code>
 +
 +В секции //OIDC// меняем отпечаток сертификата на нужный:
 +
 +<code>
 + "OIDC": {
 +    "IDP": {
 +      "CertificateThumbprint": "e057b052c98d11f12216e7fda990adca09b387db"
 +    },
 +</code>
 +
 +Добавляем НОВОГО клиента в секцию //Clients//. //ClientId// должен соответствовать ID клиента, который мы указали выше в настройках плагина //CGP//. //ClientSecret// мы тоже указывали в настройках плагина.
 +
 +//RedirectUris// и //PostLogoutRedirectUris// были выяснены опытным путём, их тоже нужно указать. Вся секция нового клиента выглядит так:
 +
 +
 +<code>
 +   {
 + "ClientId": "communigate",
 + "ClientSecret": "Secret!!1",
 + "DisplayName": "CommuniGate Pro",
 + "Permissions": [
 + "ept:authorization",
 + "ept:device",
 + "ept:introspection",
 + "ept:logout",
 + "ept:revocation",
 + "ept:token",
 +
 + "gt:authorization_code",
 + "gt:client_credentials",
 + "gt:urn:ietf:params:oauth:grant-type:device_code",
 + "gt:implicit",
 + "gt:password",
 + "gt:refresh_token",
 +
 + "rst:code",
 + "rst:code id_token",
 + "rst:code id_token token",
 + "rst:code token",
 + "rst:id_token",
 + "rst:id_token token",
 + "rst:none",
 + "rst:token",
 +
 + "scp:address",
 + "scp:email",
 + "scp:phone",
 + "scp:profile",
 + "scp:roles",
 + "scp:openid"
 +
 +
 + ],
 + "RedirectUris": [
 + "https://cgp.domain.ru/sys/login-sso-oidc-verify.wcgp"
 + ],
 + "PostLogoutRedirectUris": [
 + "https://cgp.domain.ru/"
 + ]
 +   } 
 +</code>
 +
 +:!: После установки настроек перезапустим //IIS// (//Служба веб-публикаций//).
 +
 +==== Настройки консоли Indeed AM ====
 +
 +Теперь проверим - какие у нас настройки в консоли управления Indeed. Логинимся в неё:
 +
 +  https://indeedam.domain.ru/am/mc/
 +Сначала убедимся в том, что у нас включены //Indeed Key// и //Windows Password// в глобальных настройках (пункт меню //Конфигурация//), а также любые другие настройки, которым могут быть нам интересны.
 +
 +;#;
 +{{::indeedkeyenabledglobal.jpg|}}
 +;#;
 +
 +;#;
 +{{:cgp:indeedwpenabledglobal.jpg|}}
 +;#;
 +
 +Теперь в разделе //политики// создадим новую политику для модуля //IDP//. 
 +
 +;#;
 +{{::indeed_idp_app_policy.jpg|}}
 +;#;
 +
 +:!: Чтобы приложение //IDP// вообще появилось и работало - нам необходимы установленные лицензии на модуль //Identity Provider//. 
 +
 +Также добавим в //Область действия// модуля IDP пользователей или группы, которые будем использовать при логине. 
 +
 +;#;
 +{{:cgp:indeedidpusers.jpg|}}
 +;#;
 +
 +
 +В свойствах поставщика учётных данных //IDP// внутри политики включим нужные нам провайдеры.
 +
 +;#;
 +{{:cgp:indeedidpprovidersconfig.jpg|}}
 +;#;
 +
 +==== Проверка авторизации в CGP  ====
 +
 +Теперь включаем плагин //OpenID Connect login// на каждом сервере //CGP//.
 +
 +Далее заходим в веб-интерфейс CGP и нажимаем //Вход через OpenID Connect//.
 +
 +;#;
 +{{:cgp:cgpoidcconnectlogin.jpg|}}
 +;#;
 +
 +Если всё настроено корректно //Indeed// последовательно запросит //UserName// (логин //Windows//, либо email пользователя), пароль и push-подтверждение //Indeed Key//, а затем откроет веб-интерфейс пользователя //CGP//.
 +
 +:!: Email домен и пользователь, который мы используем при входе через //Indeed IDP// должен быть известен //CGP//, т.е. должен существовать основной домен, либо алиас домена + пользователь в этом домене. 
 +
 +;#;
 +{{:cgp:cgp_oidc_indeed_login_username.jpg|}}
 +;#;
 +
 +;#;
 +{{:cgp:cgp_oidc_indeed_login_password.jpg|}}
 +;#;
 +
 +;#;
 +{{:cgp:cgp_oidc_indeed_login_push_key.jpg|}}
 +;#;
 +
 +{{tag>CommuniGate Indeed IDP Mail Security}}