Данный компонент предназначен для аутентификации пользователей в web-приложениях системы (ManagementConsole, SelfService и WebApi) по протоколу OpenID Connect. Он является обязательным для инсталляций системы под управлением ОС Linux и опциональным для инсталляций под управлением ОС Windows.
OpenID Connect (OIDC) - это протокол аутентификации и авторизации, разработанный на основе OAuth 2.0, который добавляет слой идентификации к протоколу OAuth. Он позволяет приложениям проверять идентичность пользователя и получать информацию о нем от провайдера идентификации (Identity Provider, IdP).
Установка сервера OIDC
- ОС Windows — сервер OIDC устанавливается из дополнительного пакета RutokenKeyBox.Oidc.Server-<номер версии>.x64.ru-ru.msi.
- ОС Linux — сервер OIDC устанавливается вместе с сервером системы, являясь частью дистрибутива.
После установки серверу OIDC потребуется сертификат подписи JWT-токенов, а также настройка конфигурационного файла appsettings.json, который находится по следующему пути:
- ОС Windows — C:\inetpub\wwwroot\cm\oidc\appsettings.json
- ОС Linux — /opt/rutoken/cm/oidc/appsettings.json
Настройка сервера OIDC
В качестве сертификата подписи можно использовать SSL/TLS-сертификат, например, используемый для работы веб-сервера RutokenKeyBox.
Сертификат подписи JWT-токенов в ОС Windows
В ОС Windows сертификат подписи должен находиться в хранилище Локальный компьютер - Личное, и IIS должен иметь полный доступ к закрытому ключу этого сертификата, для этого:
- Перейдите в оснастку Сертификаты (Certificates) компьютера, на котором установлен сервер OIDC.
- Кликните правой кнопкой мыши на сертификате, выберите Все задачи (All tasks) > Управление закрытыми ключами... (Manage Private Keys...).
- Нажмите Добавить (Add), укажите сервер в меню Размещение (Location), укажите локальную группу IIS_IUSRS в поле Введите имена выбранных объектов (Enter the object names to select), нажмите Проверить имена (Check Names) и ОК.
- Выставите права Полный доступ (Full Control) и Чтение (Read).
- Нажмите Применить (Apply).
Сертификат подписи JWT-токенов в ОС Linux
В ОС Linux сертификат использует пользователь, от имени которого запускается сервер OIDC (по умолчанию www-data).
Сертификат вместе с закрытым ключом должен находиться в файле формата .pfx в поддиректории домашнего каталога данного пользователя ~/.dotnet/corefx/cryptography/x509stores/my/ и должен быть освобожден от пароля на файл.
Для создания такого файла используйте сертификат и закрытый ключ, созданные на этапе настройки веб-сервера NGINX или Apache, или создайте их заново с помощью следующих команд (необходимо подставить имя импортированного pfx файла вместо PFXFILE.pfx):
|
Настройка конфигурационного файла appsettings.json
Настройка конфигурационного файла OIDC сервера производится через Мастер настройки Rutoken KeyBox в разделах Контроль доступа (ОС Linux), Контроль доступа - OpenID Connect (ОС Windows).
После прохождения Мастера настройки создается файл настроек OIDC сервера appsettings.json с заполненными необходимыми для работы системы секциями и параметрами:
- В параметре "signingCertificateThumbprint" указывается отпечаток сертификата подписи JWT-токенов.
- В секции "clients" Мастер настройки заполняет параметры "clientSecret" (по сути секреты являются разрешенными для предъявления приложениями системы паролями), "redirectUris" и "postLogoutRedirectUris" для корректной маршрутизации между OIDC и соответствующими web-приложениями системы.
- В секции "authentication" указан метод аутентификации пользователей, который будет использовать сервер OIDC. В зависимости от расположения сервера системы и ОС может быть указан следующий метод: Windows или WindowsCustom.
ОС Windows — доступны два метода: Windows или WindowsCustom. Мастер настройки выставляет значение Windows.
- ОС Linux — доступен только метод WindowsCustom.
Windows - используется, если сервер системы развернут на доменной рабочей станции под управлением ОС Windows.
WindowsCustom - используется, если сервер развернут вне домена или если пользователи домена Active Directory располагаются за пределами того домена, в котором развернут сервер системы, и с которым нет трастовых отношений.
- Секция "ldap" используется, если в качестве метода аутентификации пользователей выбран WindowsCustom. В случае прохождения Мастером настройки секции заполняются автоматически, в случае ручной настройки укажите:
- server - имя хоста или IP-адрес LDAP-сервера.
- port - обычно LDAP-сервер принимает входящие соединения на порт 389 по протоколам TCP или UDP. Для LDAPS обычно используется порт 636.
- secureSocketLayer - опция для включения или отключения SSL (Secure Sockets Layer) для защищенного соединения. Параметр переключается в "True" при использовании LDAPS.
- verifyServerCertificate - опция для включения или отключения проверки сертификата сервера при использовании SSL. Параметр переключается в "True" при использовании LDAPS.
- authType - тип аутентификации, который будет использоваться при подключении к LDAP-серверу.
- userName - имя сервисной учетной записи для работы с каталогов пользователем в формате: "Имя домена(NetBIOS)\имя учетной записи".
- password - пароль от сервисной учетной записи.
- domainDnsName - DNS-имя домена.
domainNetbiosName - NetBIOS-имя домена.
Чтобы узнать DNS-имя домена и NetBIOS-имя домена, выполните в командной строке:
set USERDNSDOMAIN - выводит DNS-имя домена
set USERDOMAIN - выводит NetBIOS-имя домен
По умолчанию сервер OIDC для своей работы использует локальную базу данных SQLite. В этом случае данные сервера OIDC будут храниться в каталоге /opt/rutoken/cm/oidc/data. Если требуется использовать базу данных Microsoft SQL или PostgreSQL, измените секции "defaultConnection" и "provider".
- SQLite. Внесение изменений не требуется. Секции имеют следующие значения:
- "defaultConnection": "Filename=./data/oidc-server.sqlite3"
- "provider": "sqlite"
- Microsoft SQL. Создайте в СУБД базу данных и настройте подключение к ней в файле (в примере для подключения к базе данных используется SQL аутентификация):
- "defaultConnection": "Data Source=172.17.0.10;Initial Catalog=oidcdb;Persist Security Info=True;User ID=servicesql;Password=p@ssw0rd"
- "provider": "mssql"
- PostgreSQL. Создайте в СУБД базу данных и настройте подключение к ней в файле (в случае использования файла .pgpass не включайте директиву Password в строку подключения):
- "defaultConnection": "Host=172.17.0.11;Port=5432;Database=oidcdb;Username=servicepg;Password=p@ssw0rd"
"provider": "pgsql"
После применения изменений в конфигурационном файле требуется перезагрузить сервер OIDC для применения изменений.