JWT аутентификация#

CedrusData позволяет аутентифицировать пользователя с помощью JWT (JSON Web Token).

Важно

Для использования любого механизма аутентификации необходимо предварительно включить Шифрование клиентского трафика с помощью TLS и Аутентификация узлов в кластере (shared secret).

Принцип работы JWT:

  1. Клиент запрашивает аутентификацию на сервере.

  2. Сервер отправляет учетные данные пользователя в службу аутентификации, которая аутентифицирует пользователя и возвращает JWT-токены серверу.

  3. Сервер передает JWT токен клиенту.

Типичный сценарий использования аутентификации с помощью JWT - поддержка систем, в которых между пользователем и кластером CedrusData установлено промежуточное ПО, выполняющее запросы к CedrusData от имени пользователя.

Важно

Если вы используете OAuth2 или OIDC, используйте механизм аутентификации OAUTH2, который обрабатывает JWT-токены автоматически.

CedrusData поддерживает JWT в кодировке Base64, но не зашифрованные JWT.

Получить ключ для проверки подписи JWT можно одним из следующих способов:

  • Загрузить ключ из JWKS (JSON web key set).

  • Загрузить ключ из локальной файловой системы координатора.

Конфигурация#

Конфигурацию необходимо задать на координаторе.

Задайте механизм аутентификации PASSWORD в etc/config.properties и укажите URL службы JWKS или путь к файлу ключа PEM или HMAC в локальной файловой системе:

http-server.authentication.type=JWT
http-server.authentication.jwt.key-file=https://cluster.example.net/.well-known/jwks.json
Параметры конфигурации:#

Название

Описание

http-server.authentication.jwt.key-file

Обязателен. URL службы JWKS или путь к файлу ключа в формате PEM или HMAC <https://wikipedia.org/wiki/HMAC>_ в локальной файловой системе. Если путь к файлу содержит $KEYID, он будет заменен на значение поля keyid из JWT, что позволяет обрабатывать токены, зашифрованные различными ключами.

http-server.authentication.jwt.required-issuer

Ожидаемое значение поля JWT iss (Issuer). В случае несовпадения, JWT токен будет считаться невалидным.

http-server.authentication.jwt.required-audience

Ожидаемое значение поля JWT aud (Audience). В случае несовпадения, JWT токен будет считаться невалидным.

http-server.authentication.jwt.principal-field

Имя поля JWT, которое будет использовано для определения имени пользователя. Значение по умолчанию: sub.

http-server.authentication.jwt.user-mapping.pattern

Регулярное выражение для :doc:сопоставления имен пользователей </security/user-mapping>.

http-server.authentication.jwt.user-mapping.file

Файл с правилами :doc:сопоставления имен пользователей </security/user-mapping>.

Использование JWT с клиентами#

При использовании Trino CLI укажите JWT токен в качестве значения аргумента --access-token.

При использовании драйвера Trino JDBC укажите JWT токен в качестве значения параметра accessToken.

Полезные ссылки#