JwtVerifier#

Действие JwtVerifier осуществляет проверку подписи jwt-токенов по предоставленным публичным ключам и опционально проверяет срок действия токена.

Существует 2 варианта загрузки публичных ключей - через http и через локальный файл.

Параметры:

Название

Обязательность

Допустимые значения

Описание

jwks_url

-

Строковое значение

Url, из которого будут браться публичные ключи для проверки подписи jwt-токена.

token_var

+

Строковое значение

Переменная или выражение, в котором будет находиться токен для проверки.

check_expiry

-

true/false

Определяет необходимость проверки срока действия токена.
По умолчанию - true.

max_clock_skew

-

Целочисленное значение

Определяет период в секундах до истечения срока действия токена, при котором проверка срока действия перестанет проходить.
Например, если max_clock_skew: 5, то за 5 секунд до истечения срока действия токена проверка перестанет проходить.
По умолчанию - 0.

jwks_path

-

true/false

Конструкция вида: {type: file, path: путь к файлу}.
Определяет необходимость считывания содержимого файла каждый раз при запросе или только при старте.
path: путь к файлу относительно директории с кастомными ресурсами. Содержит в себе публичные ключи в json-формате.

runtime_update

-

Параметр от действия FileToMessage.

http_sender

-

Параметры от действия HttpSender, за исключением external_url.

Возможно указать либо параметры jwks_url вместе с http_sender, либо jwks_path вместе с runtime_update (опционально), либо не указывать ничего, но перед объявлением действия JwtVerifier определить действие, которое в message проставит значения публичных ключей. Остальные параметры (token_var/check_expiry/max_clock_skew) можно указывать в зависимости от обязательности.

Заполняемые переменные:

Название

Допустимые значения

Описание

clj_jwt_claims

Текстовое значение

Клеймсы jwt токена.

clj_validation_error_description

Текстовое значение

Описание ошибки.

Примеры использования действия JwtVerifier:

- action: JwtVerifier
  params:
    jwks_path: {path: jwks.json, type: file}
    token_var: $http_apikey
    runtime_update: true
    check_expiry: false
- action: JwtVerifier
  params:
    jwks_url: "/auth/realms/PlatformAuth/protocol/openid-connect/certs"
    token_var: $http_apikey
    check_expiry: true
    http_sender:
      service_id: request_to_oauth_with_cache
      service_type: service_http_proxy
      connect_timeout: 200s
      request_method: get
chains:
- actions:
  - action: FileToMessage
    actions:
    - action: JwtVerifier
      params: {check_expiry: false, token_var: $http_apikey}
    params: {path: /sowa/profile_storage/custom/oauth2/jwks.json, runtime_update: true}