Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在DataPower中创建JWT自定义声明_Jwt_Ibm Datapower - Fatal编程技术网

在DataPower中创建JWT自定义声明

在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。但是,当我尝试

在DataPower 7.5.2.0上运行

我创建了一个
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