首页 文章

Lambda Cognito用户池授权程序 - 我可以自动获取自定义用户属性吗?

提问于
浏览
2

我正在使用Lambda函数,使用Cognito用户池授权程序通过API网关执行 .

我知道我可以从 event.requestContext.authorizer.claims 获取"standard"用户属性(如 subemailcognito:username 等) .

但这不包括自定义用户属性(如 custom:myAttribute ) .

我知道我可以通过adminGetUser获取它们,这可行,但我想知道我是否可以保存此调用并以某种方式在_2768761中自动获取这些自定义属性?

2 回答

  • 1

    您是否已经查看此文档以获取自定义声明? https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-enable-cognito-user-pool.html . 您需要以下列方式为自定义属性定义上下文:

    {
        "context" : {
            "role" : "$context.authorizer.claims['custom:myAttribute']"
        }
    }
    
  • 3

    将自定义属性添加到Cognito用户池并为用户分配值后,有几个原因导致它不会出现在 requestContext.authorizer.claims 集合中 .

    第一个也是最明显的一点是,您需要通过您用来生成您要进行身份验证的ID令牌的应用客户端来使自定义属性可读 . 如果您使用的是AWS控制台,则可以通过导航到 App Clients -> Show Details -> Set attribute read and write permissions 来完成,然后勾选要使Lambda可见的属性 .

    即使您已完成第一步,您的属性未出现的第二个原因是用户的声明是在您生成的ID令牌中编码的 . 这意味着如果您在使属性可读之前使用了创建的ID令牌,您仍然无法看到它们 . 解决方案是为您的用户生成一个新的ID令牌,此时您应该在Lambda的请求上下文中看到属性 .

相关问题