Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Данный компонент предназначен для аутентификации пользователей в 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-сертификат, например, используемый для работы веб-сервера Indeed CMRutokenKeyBox

Сертификат подписи 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):

mkdir -p ~/.dotnet/corefx/cryptography/x509stores/my/
openssl pkcs12 -in PFXFILE.pfx -chain -nokeys | sed -ne '/-BEGIN CERTIFICATE/,/END CERTIFICATE/p' > SSL.crt
openssl pkcs12 -in PFXFILE.pfx -nocerts -out SSLencrypted.key
openssl rsa -in SSLencrypted.key -out SSL.key
rm -f SSLencrypted.key
openssl pkcs12 -export -out ~/.dotnet/corefx/cryptography/x509stores/my/SSL.pfx -inkey SSL.key -in SSL.crt

Настройка конфигурационного файла 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 для применения изменений.