首页 > 解决方案 > WSO2 解码 JWT

问题描述

我有一个包含 APIM、IS 和微积分器的结构。配置 APIM 以通过 X-JWT-Assertion 标头将属性传递给后端。现在我需要将此 JWT 解码为 Json 格式以使用一些声明。

我尝试了以下功能:

<property expression="base64Decode(get-property('JWT_HEADER'))" name="decoded"/> 

但它返回加扰的数据。

在此处输入图像描述

有谁知道我如何进行解码?

谢谢。

标签: wso2

解决方案


JWT 令牌包含由点 (.) 分隔的三个部分,如下[JWT.io]

  • 标题
  • 身体
  • 签名

如果您尝试访问声明,则必须拆分正文部分,然后对其进行解码。否则,它将导致您上面提到的不可读的格式。

以下是对 JWT Token 的 Body 进行拆分和解码的示例表达式

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

推荐阅读