Skip to main content
Version: Indeed Certificate Manager 7.1

Сервер OpenID Connect

Сервер OpenID Connect предназначен для аутентификации пользователей в веб-приложениях Indeed CM по протоколу OpenID Connect.

Является обязательным для инсталляций системы под управлением ОС Linux и дополнительным для инсталляций под управлением ОС Windows.

информация

OpenID Connect (OIDC) – это протокол аутентификации и авторизации, разработанный на основе OAuth 2.0, который добавляет слой идентификации к протоколу OAuth. Он позволяет приложениям проверять идентичность пользователя и получать информацию о нем от провайдера идентификации (Identity Provider, IdP).

Выберите инструкцию в зависимости от ОС, где установлен сервер Indeed CM.

Установите сервер OIDC из дополнительного пакета IndeedCM.Oidc.Server-<номер версии>.x64.ru-ru.msi. После установки:

  1. Загрузите сертификат подписи JWT-токенов.
  2. Настройте конфигурационный файл appsettings.json.

Сертификат подписи JWT-токенов

В качестве сертификата подписи используйте сертификат и закрытый ключ, созданные для веб-сервера.

Чтобы подготовить сертификат подписи:

  1. Поместите сертификат подписи в хранилище Локальный компьютер - Личное.
  2. Предоставьте IIS полный доступ к закрытому ключу сертификата подписи:
    1. Перейдите в оснастку Сертификаты (Certificates) компьютера, на котором установлен сервер OIDC.
    2. Кликните правой кнопкой мыши на сертификате, выберите Все задачи (All tasks) → Управление закрытыми ключами... (Manage Private Keys...).
    3. Нажмите Добавить (Add).
    4. В меню Размещение (Location) укажите сервер.
    5. В поле Введите имена выбранных объектов (Enter the object names to select) укажите локальную группу IIS_IUSRS.
    6. Нажмите Проверить имена (Check Names) и ОК.
    7. Выставите права Полный доступ (Full Control) и Чтение (Read).
    8. Нажмите Применить (Apply).

Настройка файла appsettings.json

Настройте конфигурацию сервера OIDC:

  1. Запустите Мастер настройки.
  2. Перейдите в раздел Контроль доступаOpenID Connect.
  3. Укажите следующие настройки:
    • URL подключения к серверу OpenID Connect.
    • Полное доменное имя (FQDN) сервера Indeed CM. Для конфигурации с несколькими серверами укажите их полные доменные имена через запятую.
    • Отпечаток сертификата подписи.
  4. При необходимости сгенерируйте клиентские секреты.
  5. Примените настройки.

После завершения работы Мастера в директории C:\inetpub\wwwroot\cm\oidc создается конфигурационный файл appsettings.json.

Аутентификация

В секции authentication файла appsettings.json указан метод аутентификации пользователей, который будет использовать сервер OIDC. Выберите один из методов: Windows или WindowsCustom. Мастер настройки выставляет значение Windows.

Подробнее об аутентификации Windows и Windows Custom

Выберите Windows, если сервер Indeed CM развернут на доменной рабочей станции под управлением ОС Windows.

Выберите WindowsCustom, если сервер Indeed CM развернут вне домена или пользователи домена, где находится каталог пользователей, находятся за пределами домена сервера Indeed CМ, и с сервером нет трастовых отношений.

База данных

По умолчанию сервер OIDC использует локальную базу данных SQLite. База данных SQLite используется для инсталляций с одним сервером Indeed CM. Данные сервера OIDC хранятся в каталоге C:\inetpub\wwwroot\cm\oidc\data.

Для инсталляций с несколькими серверами Indeed CM используйте базу данных Microsoft SQL или PostgreSQL. Измените секции defaultConnection и provider:

Изменения не нужны. Секции имеют следующие значения:

  • defaultConnection: "Filename=./data/oidc-server.sqlite3"
  • provider: "sqlite"
Пример заполненного файла конфигурации
{
"pathBase": "/cm/oidc",
"culture": "ru",
"certHeaderName": "x-ssl-client-cert",
"connectionStrings": {
"defaultConnection": "Filename=./data/oidc-server.sqlite3"
},
"database": {
"provider": "sqlite"
},
"oidc": {
"clients": [
{
"clientId": "ManagementConsole",
"clientSecret": "9d5d705e1cf5c12b2a5432c5a40c711e6505e939ca2d7cf0df48fc505c022329",
"displayName": "Management console",
"type": "confidential",
"consentType": "implicit",
"permissions": [ "ept:authorization", "ept:token", "ept:logout", "gt:authorization_code", "rst:code", "scp:profile", "scp:roles" ],
"requirements": [ "ft:pkce" ],
"redirectUris": [ "https://server.demo.local/cm/mc/signin-oidc" ],
"postLogoutRedirectUris": [ "https://server.demo.local/cm/mc/signout-callback-oidc" ]
},
{
"clientId": "SelfService",
"clientSecret": "319e8b577563b7c6f27653d72b49659d16f06e0a150fd3a224002c778432319d",
"displayName": "Self-service",
"type": "confidential",
"consentType": "implicit",
"permissions": [ "ept:authorization", "ept:token", "ept:logout", "gt:authorization_code", "rst:code", "scp:profile", "scp:roles" ],
"requirements": [ "ft:pkce" ],
"redirectUris": [ "https://server.demo.local/cm/ss/signin-oidc" ],
"postLogoutRedirectUris": [ "https://server.demo.local/cm/ss/signout-callback-oidc" ]
},
{
"clientId": "WebApi",
"clientSecret": "9a9c56e5e8090c7fbcdffcc13537fc60d7a2f8547cc92131893e88cf08a7d5f9",
"displayName": "Web api",
"type": "confidential",
"consentType": "implicit",
"permissions": [ "ept:introspection" ],
"requirements": [],
"redirectUris": [],
"postLogoutRedirectUris": []
},
{
"clientId": "WebApiClient",
"clientSecret": null,
"displayName": "Web api client",
"type": "public",
"consentType": "implicit",
"permissions": [ "ept:token", "gt:password", "scp:profile", "scp:roles", "scp:webapi" ],
"requirements": [],
"redirectUris": [],
"postLogoutRedirectUris": []
}
],
"signingCertificateThumbprint": "fed6d86ce6caa079f80d1b6c089cddf109d19c2d",
"useEphemeralSigningKey": false,
"disableTransportSecurityRequirement": false,
"accessTokenLifetime": 43200,
"identityTokenLifetime": 43200,
"authentication": "Windows",
"allowRememberLogin": false
},
"ldap": {
"directories": [
{
"server": "DC_SERVER",
"port": 389,
"secureSocketLayer": false,
"verifyServerCertificate": false,
"authType": "Basic",
"userName": "ACCOUNT_NAME",
"password": "ACCOUNT_PASSWORD",
"domainDnsName": "DOMAIN_DNS_NAME",
"domainNetbiosName": "DOMAIN_NETBIOS_NAME"
}
]
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}