在DataPower中创建JWT自定义声明

时间:2016-12-20 18:58:35

标签: jwt ibm-datapower

在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 Generator网关脚本中添加多个自定义声明?

1 个答案:

答案 0 :(得分:2)

看起来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