如何使用claimsToAddOrOverride在Cognito中的IdToken声明中添加数组值

Jay*_*dha 6 json amazon-cognito aws-lambda

我正在使用Pre Token Generation来更新IdToken的声明.

我成功地使用单键更新声明:值对.下面是示例.

event["response"] = {"claimsOverrideDetails":{"claimsToAddOrOverride":{"scope": "test.debug"}}}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在其中添加字符串数组时,它会给我内部服务器错误(来自AWS Cognito的响应)

例如:

event["response"] = {"claimsOverrideDetails":{"claimsToAddOrOverride":{"scope": ["test1","test2]}}}
Run Code Online (Sandbox Code Playgroud)

使用lambda函数的'Test'选项可以正常工作.

如果我正在使用groupsToOverride,那么它将覆盖cognito:groups声明.

有帮助吗?

Sam*_*les 10

我认为这一定是 Cognito 的一个错误,不幸的是,在解决之前需要一个解决方法。

我知道这并不理想,但我已经通过使用分隔字符串解决了这个问题,然后我在收到令牌时将其解析为数组。

拉姆达:

exports.handler = (event, context, callback) => {
    event.response = {
        "claimsOverrideDetails": {
            "claimsToAddOrOverride": {
                "scope": "test1|test2"
            }
        }
    };

    // Return to Amazon Cognito
    callback(null, event);
};
Run Code Online (Sandbox Code Playgroud)

客户:

const token = jwt.decode(id_token);
const scopes = token.scope.split('|');
Run Code Online (Sandbox Code Playgroud)

  • 或者只是将数组字符串化:) (3认同)