首页 文章

为什么Lambda中未收到Cognito自定义属性

提问于
浏览
1

我使用“Cognito用户池授权程序”(没有“AWS_IAM”选项,没有自定义编码授权程序)通过API网关将Lambda方法称为HTTPS .

在Lambda上,我在某些情况下通过 adminUpdateUserAttributes 设置了自定义用户属性 custom:partnerId .

我可以通过Cognito User Pools AWS控制台验证是否已正确设置 .

在iOS客户端上,我也可以成功获取所有用户属性(包括自定义属性),如我在How to get Cognito user pool "sub" attribute on iOS的回答中所述

问题是这样的:

I do not receive this custom attribute in Lambda as event.requestContext.authorizer.claims['custom:partnerId'] 与下一个API请求

iOS客户端上的 until I force the user to sign in explicitly again (带有用户名/密码) .

在显式登录之后,我会按预期收到 authorizer.claims 参数中包含的自定义属性 .

我不知道这是否是API网关问题(因为我假设它是通过HTTP“授权” Headers 获取Cognito用户),iOS Cognito SDK存在问题,或者Lambda本身存在问题 .

1 回答

  • 2

    API网关中的Cognito User Pool Authorizer使用Cognito发出的Id令牌 . 此Id令牌有效期为1小时,并通过内部调用Cognito刷新API自动刷新iOS SDK . 刷新后,Id令牌将具有最新值 . 刷新方法在高级SDK中不可用,因为它由SDK隐式调用 . 但您可以使用低级SDK并直接调用刷新API,这将为您提供最新的Id令牌 . (我是Cognito团队的开发人员,并将此作为功能请求,以允许从高级SDK刷新 . )

相关问题