Page tree

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

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

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

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

  1. Установите сервер OIDC из дополнительного пакета RutokenKeyBox.Oidc.Server-<номер версии>.x64.ru-ru.msi.
  2. Установите сервер Rutoken KeyBox и в Мастере установки сервера выберите способ контроля доступа Аутентификация OpenID Connect.
  3. Подготовьте сертификат подписи JWT-токенов по инструкции ниже.
  4. Настройте параметры взаимодействия Rutoken KeyBox с сервером OIDC в Мастере настройки в разделе Контроль доступа    OpenID Connect.
  5. Примените настройки на сервере Rutoken KeyBox.

Подготовка сертификата подписи 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).

Изменение настроек базы данных

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

Помимо SQLite, вы можете использовать базу данных Microsoft SQL или PostgreSQL. Чтобы настроить подключение к Microsoft SQL или PostgreSQL, внесите изменения в конфигурационный файл сервера OIDC appsettings.json вручную. Файл appsettings.json находится в каталоге C:\inetpub\wwwroot\keybox\oidc.

  1. Создайте базу данных в Microsoft SQL.
  2. Откройте конфигурационный файл сервера OIDC appsettings.json и измените секции defaultConnection и provider. В примере для подключения к базе данных используется SQL аутентификация.

    Пример подключения к Microsoft SQL
    "connectionStrings": {
      "defaultConnection": "Data Source=MSSQL\SQLEXPRESS;Initial Catalog=oidcdb;Persist Security Info=True;User ID=servicesql;Password=p@ssw0rd;TrustServerCertificate=True"
    },
    "database": {
      "provider": "mssql"
    },
  3. Перезапустите пул приложения RutokenKeyBox OIDC, чтобы сохранить изменения.

    1. Откройте Диспетчер служб IIS (Internet Information Services Manager) и в левом меню выберите Пул приложений IIS (Application pools).
    2. Выберите приложение RutokenKeyBox OIDC и в правом меню нажмите Перезапуск (Recycle).
  1. Создайте базу данных в PostgreSQL.
  2. Откройте конфигурационный файл сервера OIDC appsettings.json и измените секции defaultConnection и provider. Если вы используете файл PGPASS, не включайте директиву Password в строку подключения.

    Пример подключения к PostgreSQL
    "connectionStrings": {
      "defaultConnection": "Host=172.17.0.11;Port=5432;Database=oidcdb;Username=servicepg;Password=p@ssw0rd"
    },
    "database": {
      "provider": "pgsql"
    },
  3. Перезапустите пул приложения RutokenKeyBox OIDC, чтобы сохранить изменения.

    1. Откройте Диспетчер служб IIS (Internet Information Services Manager) и в левом меню выберите Пул приложений IIS (Application pools).
    2. Выберите приложение RutokenKeyBox OIDC и в правом меню нажмите Перезапуск (Recycle).


  1. Установите сервер Rutoken KeyBox. Сервер OIDC является частью дистрибутива Rutoken KeyBox и устанавливается вместе с сервером Rutoken KeyBox.
  2. Подготовьте сертификат подписи JWT-токенов по инструкции ниже.
  3. Настройте параметры взаимодействия Rutoken KeyBox с сервером OIDC в Мастере настройки в разделе Контроль доступа.
  4. Примените настройки на сервере Rutoken KeyBox.

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

В качестве сертификата подписи используйте сертификат и закрытый ключ, созданные для веб-сервера. Сертификат и закрытый ключ необходимо объединить в файл PFX, и поместить файл PFX в поддиректорию домашнего каталога пользователя, от имени которого запускается сервер OIDC.

По умолчанию сервер OIDC запускается от имени пользователя www-data. Поддиректория домашнего каталога пользователя www-data находится по пути /var/www/.dotnet/corefx/cryptography/x509stores/my/.

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

  1. Создайте поддиректорию домашнего каталога пользователя, от имени которого запускается сервер OIDC (www-data):

    sudo mkdir -p /var/www/.dotnet/corefx/cryptography/x509stores/my/

    Как проверить наличие пользователя www-data

    Чтобы проверить наличие пользователя www-data, выполните: /etc/passwd | grep www-data.

    Пример вывода, если пользователь www-data существует
    www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

    Если пользователя www-data не существует, вы можете его создать или сменить пользователя, от имени которого запускаются сервисы Rutoken KeyBox.

    sudo useradd -m -d /var/www -s /usr/sbin/nologin www-data
    sudo su -s /bin/sh www-data


    Чтобы сменить пользователя, выполните следующую команду и укажите имя пользователя в директиве User.

    /etc/systemd/system/keybox-<имя сервиса>.service
  2. Объедините файл сертификата и файл ключа в файл PFX. Поместите файл PFX в поддиректорию домашнего каталога пользователя.

    При выполнении команды утилита openssl предлагает установить пароль для файла PFX. Оставьте файл PFX без пароля: два раза нажмите Enter.

    sudo openssl pkcs12 -export -out /var/www/.dotnet/corefx/cryptography/x509stores/my/PFXFILE.pfx -inkey SSL.key -in SSL.crt
  3. Настройте право доступа 600 к файлу PFX.
    sudo chmod 600 /var/www/.dotnet/corefx/cryptography/x509stores/my/PFXFILE.pfx
  4. Получите отпечаток сертификата подписи:

    sudo openssl x509 -fingerprint -in SSL.crt -noout | tr -d ':'
    Пример вывода отпечатка сертификата
    SHA1 Fingerprint=ADB613EC1A1692310D83C81F269C098A3DBD4EE0

Изменение настроек базы данных

По умолчанию сервер OIDC использует локальную базу данных SQLite. База данных SQLite используется для инсталляций с одним сервером Rutoken KeyBox. В этом случае данные сервера OIDC будут храниться в каталоге /opt/aktivco/keybox/oidc/data.

Помимо SQLite, вы можете использовать базу данных Microsoft SQL или PostgreSQL. Чтобы настроить подключение к Microsoft SQL или PostgreSQL, внесите изменения в конфигурационный файл сервера OIDC appsettings.json вручную. Файл appsettings.json находится в каталоге /opt/aktivco/keybox/oidc.

  1. Создайте базу данных в Microsoft SQL.
  2. Откройте конфигурационный файл сервера OIDC appsettings.json и измените секции defaultConnection и provider. В примере для подключения к базе данных используется SQL аутентификация.

    Пример подключения к Microsoft SQL
     "connectionStrings": {
       "defaultConnection": "Data Source=MSSQL\SQLEXPRESS;Initial Catalog=oidcdb;Persist Security Info=True;User ID=servicesql;Password=p@ssw0rd;TrustServerCertificate=True"
     },
     "database": {
       "provider": "mssql"
     },
  3. Перезагрузите сервис OIDC, чтобы применить изменения.

    sudo systemctl restart keybox-oidc.service

     

  1. Создайте базу данных в PostgreSQL.
  2. Откройте конфигурационный файл сервера OIDC appsettings.json и измените секции defaultConnection и provider. Если вы используете файл PGPASS, не включайте директиву Password в строку подключения.

    Пример подключения к PostgreSQL
     "connectionStrings": {
       "defaultConnection": "Host=172.17.0.11;Port=5432;Database=oidcdb;Username=servicepsql;Password=p@ssw0rd"
     },
     "database": {
       "provider": "pgsql"
     },
  3. Перезагрузите сервис OIDC, чтобы применить изменения.

    sudo systemctl restart keybox-oidc.service
  • No labels