#wso2
Вопрос:
У меня есть структура с APIM, IS и микроинтегратором. Настроил APIM для передачи атрибутов серверной части через заголовок X-JWT-Утверждения. Теперь мне нужно декодировать этот JWT в формат Json, чтобы использовать некоторые утверждения.
Я попробовал это с помощью функции:
<property expression="base64Decode(get-property('JWT_HEADER'))" name="decoded"/>
но он возвращает зашифрованные данные.
введите описание изображения здесь
Кто-нибудь знает, как я могу выполнить декодирование?
Спасибо.
Ответ №1:
Токен JWT содержит три части, разделенные точками (.) следующим образом [JWT.io]
- Заголовок
- Тело
- Подпись
Если вы пытаетесь получить доступ к утверждениям, вам нужно разделить часть тела, а затем расшифровать ее. В противном случае это приведет к нечитаемому формату, как вы упомянули выше.
Ниже приведен пример выражения для разделения и декодирования тела токена JWT
<property name="assertion" expression="$trp:X-JWT-Assertion" />
<!-- split the body content using substring functions -->
<property name="decoded" expression="base64Decode(fn:substring-before(fn:substring-after($ctx:assertion, '.'), '.'))" />
<log level="custom">
<property name="decoded-body" expression="$ctx:decoded" />
</log>