WSO2 Декодирует JWT

#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>