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