wso2 - WSO2 解码 JWT
问题描述
我有一个包含 APIM、IS 和微积分器的结构。配置 APIM 以通过 X-JWT-Assertion 标头将属性传递给后端。现在我需要将此 JWT 解码为 Json 格式以使用一些声明。
我尝试了以下功能:
<property expression="base64Decode(get-property('JWT_HEADER'))" name="decoded"/>
但它返回加扰的数据。
有谁知道我如何进行解码?
谢谢。
解决方案
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>
推荐阅读
- android - Glide 4.X:DataFetcher - 尝试从 ZIP 文件加载图片
- codenameone - 将 Youtube iOS 应用中的 URL 分享到我的 Codename One iOS 应用
- c++ - 没有匹配函数调用'myStud::myStud(int, const char [5], int, int, int)'
- math - 游戏物理近似:对象与水的交互。如何模拟浮力?
- android - 是否有任何 API 可以使用 gps 和室内定位创建地图?
- kotlin - 如果存在多个相同类型,如何返回特定的 lambda?(科特林)
- c - 如何在数组中找到不同的值
- reactjs - 使用 renderHook 测试钩子
- android - onDetach() 没有调用从一个片段移动到另一个片段
- javascript - 将类似 Minecraft 的地图存储为 JavaScript 数组