Перейти к основному содержимому
Версия: 2.0.x

Аутентификация JSON Web Token

В этом разделе описывается, как включить аутентификацию JSON Web Token в Selena.

Начиная с версии v1.5.2, Selena поддерживает аутентификацию клиентского доступа с использованием JSON Web Tokens.

JSON Web Token (JWT) — это открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ безопасной передачи информации между сторонами в виде JSON-объекта. Эта информация может быть проверена и считается доверенной, поскольку она имеет цифровую подпись. JWT могут быть подписаны с использованием секрета (с алгоритмом HMAC) или пары открытого/закрытого ключа с использованием RSA или ECDSA.

В этом разделе описывается, как вручную создавать и аутентифицировать пользователей с использованием JWT в Selena. Инструкции по интеграции Selena с аутентификацией JWT с помощью security integration см. в разделе Аутентификация с помощью Security Integration. Подробнее об аутентификации групп пользователей с использованием JWT см. в разделе Аутентификация групп пользователей.

Предварительные требования

Если вы хотите подключиться к Selena из MySQL-клиента, версия MySQL-клиента должна быть 9.2 или выше.

Создание пользователя с JWT

При создании пользователя укажите метод аутентификации как JWT с помощью IDENTIFIED WITH authentication_jwt [AS '{xxx}']. {xxx} — это свойства JWT пользователя. Помимо следующего метода, вы можете настроить свойства JWT по умолчанию в файле конфигурации FE. Вам необходимо вручную изменить все файлы fe.conf и перезапустить все FE, чтобы конфигурация вступила в силу. После установки конфигурации FE, Selena будет использовать свойства по умолчанию, указанные в вашем файле конфигурации, и вы можете опустить часть AS '{xxx}'.

Синтаксис:

CREATE USER <username> IDENTIFIED WITH authentication_jwt [AS
'{
"jwks_url": "<jwks_url>",
"principal_field": "<principal_field>",
"required_issuer": "<required_issuer>",
"required_audience": "<required_audience>"
}']
СвойствоСоответствующая конфигурация FEОписание
jwks_urljwt_jwks_urlURL к сервису JSON Web Key Set (JWKS) или путь к локальному файлу открытого ключа в директории fe/conf.
principal_fieldjwt_principal_fieldСтрока, используемая для идентификации поля субъекта (sub) в JWT. Значение по умолчанию — sub. Значение этого поля должно совпадать с именем пользователя для входа в Selena.
required_issuerjwt_required_issuer(Опционально) Список строк для идентификации издателей (iss) в JWT. JWT считается действительным, только если одно из значений в списке совпадает с издателем JWT.
required_audiencejwt_required_audience(Опционально) Список строк для идентификации аудитории (aud) в JWT. JWT считается действительным, только если одно из значений в списке совпадает с аудиторией JWT.

Пример:

CREATE USER tom IDENTIFIED WITH authentication_jwt AS
'{
"jwks_url": "http://localhost:38080/realms/master/protocol/jwt/certs",
"principal_field": "preferred_username",
"required_issuer": "http://localhost:38080/realms/master",
"required_audience": "selena"
}';

Если вы установили свойства JWT в файлах конфигурации FE, вы можете напрямую выполнить следующий оператор:

CREATE USER tom IDENTIFIED WITH authentication_jwt;

Подключение из MySQL-клиента с JWT

Для подключения к Selena из MySQL-клиента с использованием JWT необходимо включить плагин authentication_openid-connect_client и передать необходимый токен (используя путь к файлу токена) для аутентификации сопоставленного пользователя.

Синтаксис:

mysql -h <hostname> -P <query_port> --authentication-openid-connect-client-id-token-file=<path_to_token_file> -u <username>

Пример:

mysql -h 127.0.0.1 -P 9030 --authentication-openid-connect-client-id-token-file=/path/to/token/file -u tom