【问题标题】:Creating JWT custom claims in DataPower在 DataPower 中创建 JWT 自定义声明
【发布时间】:2016-12-20 18:58:34
【问题描述】:

在 DataPower 7.5.2.0 上运行

我创建了一个JWT Generator 作为AAA Policy 的一部分,它工作正常,我能够生成、签名然后在外部验证 JWT,没有任何问题。

现在我想向 JWT 添加自定义声明,所以我勾选了 Custom 框,然后上传了这个网关脚本文件:

var claim = {
    "result" : {
        "user" : "hardcode"
    }
};
session.output.write(claim);

它会生成带有user 属性的正确JWT。但是,当我尝试像这样向它添加第二个值时:

var claim = {
    "result" : {
        "user" : "hardcode",
        "name" : "myname"
    }
};
session.output.write(claim);

我现在收到此错误:

[Error: Required CustomClaim Name or Value field missing] errorMessage: 'Required CustomClaim Name or Value field missing', errorCode: '0x8580005c', errorDescription: 'GatewayScript console log message.', errorSuggestion: 'GatewayScript console log message. Refer to the message for more information.'

在我意识到我必须从 InfoCenter 的模糊文档中将输出设置为 result 之前,我收到了相同的消息。

如何在 JWT 生成器网关脚本中添加多个自定义声明?

【问题讨论】:

    标签: jwt ibm-datapower


    【解决方案1】:

    DataPower 似乎只允许您添加单个自定义声明,因此您只需将其设为一个复杂的对象,如下所示:

    var claim = {
        "result" : {
            "claim" : {
                "user" : "hardcode",
                "one" : true,
                "clientId" : "asdf-asdf-asdf",
                "endpoint" : "http://192.168.142:8080/member/ws"
            }
        }
    };
    session.output.write(claim);
    

    然后这会生成带有嵌套声明的正确 JWT。

    eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGljIiwic3ViIjoiYWRtaW4iLCJleHAiOjE0ODIyNjU5ODQsImlhdCI6MTQ4MjI2MjM4NCwianRpIjoiZDhjNTE1ZDEtZmVjMS00ZGVmLThiNDctZmYzY2E2OWVjOWRiIiwibm9uY2UiOiJtN2lVZlBqTCIsImF1ZCI6ImlkMSIsImNsYWltIjp7InVzZXIiOiJmcmVkIiwib25lIjp0cnVlLCJjbGllbnRJZCI6ImFzZGYtYXNkZi1hc2RmIiwiZW5kcG9pbnQiOiJodHRwOi8vMTkyLjE2OC4xNDI6ODA4MC9tZW1iZXIvd3MifX0.viakwnM5bhhmGIn0QmDJTmsWCuIciO2BOdUVyxYpsFA
    

    【讨论】:

      猜你喜欢
      • 2021-04-16
      • 2020-03-15
      • 2018-07-05
      • 2016-01-06
      • 2019-10-17
      • 2017-05-25
      • 2019-02-26
      • 2019-04-15
      • 2019-06-09
      相关资源
      最近更新 更多