如何添加在Cognito JWT令牌中添加的自定义角色或组?

时间:2020-02-05 05:28:53

标签: amazon-cognito

我真的很难在Cognito生成的JWT令牌中添加自定义角色或组。我正在Cognito中使用Pre-Token生成触发器来执行Lambda。我在响应中添加了“ groupOverrideDetails”对象。这是我的最终输出:

"response": {
        "claimsOverrideDetails": {
            "claimsToAddOrOverride": {
                "custom_attribute_key2": "attribute_value2",
                "custom_attribute_key": "attribute_value"
            }
        },
        "groupOverrideDetails": {
            "groupsToOverride": [
                "developers"
            ],
            "iamRolesToOverride": [
                "S3_Access_Admin"
            ],
            "preferredRole": "S3_Access_Admin"
        }
    }

但是在我的JWT令牌中,我看不到任何上述角色或组。

  1. 您能告诉我我想念什么吗?
    1. 第二,在AWS中实际存在“开发人员”组和“ S3_Access_Admin”角色是否重要?如果我需要在AWS中添加自定义组怎么办?

2 个答案:

答案 0 :(得分:0)

我不知道要对您在声明中添加的组和角色进行什么验证,但是我看到的唯一一件事是您需要将groupOverrideDetails嵌套在claimsOverrideDetails内。这是我可以开始工作的代码段。

    role_arns = ...
    event['response'] = {
        'claimsOverrideDetails': {
            'groupOverrideDetails': {
                # we don't need to modify the groups in our case
                'groupsToOverride': request['groupConfiguration']['groupsToOverride'],
                # this will set the claim 'cognito:roles'
                'iamRolesToOverride': role_arns,
                # this will set the claim 'cognito:preferredRole'
                'preferredRole': role_arns[0],
            },
    }
    return event

以下stackoverflow问题帮助了我: AWS Cognito - create groups from ADFS as Cognito Groups

供以后参考,这是AWS文档。向下滚动到标题为Pre Token Generation Example: Modify the User's Group Membership的部分 https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html

答案 1 :(得分:0)

如果您尝试添加自定义属性以访问令牌,则不支持注入自定义属性以访问令牌。通常,预令牌生成触发器会将它们添加到ID令牌中。

注意:如果您在前端使用放大功能,则可以获得ID令牌

Amplify.Auth.currentSession()).getAccessToken().getJwtToken()