在DataPower中创建JWT自定义声明
在DataPower 7.5.2.0上运行 我创建了一个在DataPower中创建JWT自定义声明,jwt,ibm-datapower,Jwt,Ibm Datapower,在DataPower 7.5.2.0上运行 我创建了一个JWT生成器,作为AAA策略的一部分,它工作正常,我能够生成、签名,然后外部验证JWT,没有任何问题 现在,我想向JWT添加一个自定义声明,因此我勾选了custom框,然后上传了这个网关脚本文件: var claim = { "result" : { "user" : "hardcode" } }; session.output.write(claim); 并使用user属性生成正确的JWT。但是,当我尝试
JWT生成器
,作为AAA策略的一部分
,它工作正常,我能够生成、签名,然后外部验证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);
var claim = {
"result" : {
"claim" : {
"user" : "hardcode",
"one" : true,
"clientId" : "asdf-asdf-asdf",
"endpoint" : "http://192.168.142:8080/member/ws"
}
}
};
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.'
这与我在意识到必须将信息中心模糊文档中的输出设置为result
之前收到的信息相同
如何在JWT Generator网关脚本中添加多个自定义声明???看起来DataPower只允许您添加单个自定义声明,因此您只需将其设置为如下所示的复杂对象:
var claim = {
"result" : {
"user" : "hardcode",
"name" : "myname"
}
};
session.output.write(claim);
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