【发布时间】:2017-09-16 21:46:19
【问题描述】:
我正在使用“Cognito 用户池授权方”(无“AWS_IAM”选项,无自定义编码授权方)通过 API 网关将 Lambda 方法调用为 HTTPS。
在 Lambda 上,我在某些情况下通过 adminUpdateUserAttributes 设置了自定义用户属性 custom:partnerId。
我可以通过 Cognito 用户池 AWS 控制台验证它是否已正确设置。
在 iOS 客户端上,我还可以成功获取所有用户属性(包括自定义属性),如我在How to get Cognito user pool "sub" attribute on iOS 的回答中所述
问题是这样的:
我在 Lambda 中没有收到此自定义属性
event.requestContext.authorizer.claims['custom:partnerId'] 与下一个 API 请求
直到我强制用户再次显式登录(使用用户名/密码)在 iOS 客户端上。
在此显式登录后,我会按预期收到包含在 authorizer.claims 参数中的自定义属性。
我不知道这是 API 网关问题(因为我假设它是通过 HTTP“授权”标头获取 Cognito 用户)、iOS Cognito SDK 的问题,还是 Lambda 本身的问题。
【问题讨论】:
-
API Gateway 只是从 Cognito 获取上下文变量。由于自定义属性在用户再次登录时存在,我认为这与 Cognito 有关。来自 Cognito 的人应该能够回答。
标签: amazon-web-services aws-lambda aws-api-gateway amazon-cognito aws-cognito