Mar*_*bst 3 amazon-web-services amazon-cognito
我有一个Lambda函数处理由API网关触发的POST请求.后者设置为通过Cognito用户池授权程序进行授权.授权工作 - 如果我传递用户的ID令牌,则处理请求,如果我不能获得401.
但是,我无法在Lambda函数中获得授权用户的身份.所有文档都让我相信它应该在上下文中,但事实并非如此.我也无法在那里映射它.更重要的是,似乎没有办法为给定ID标记的用户查询用户池.
我需要一个身份池才能完成此任务吗?如果是这样,那怎么办?为什么API网关不会自动传递用户的身份?
Rav*_*car 10
这取决于你是否Use Lambda Proxy Integration选择Integration Request了lambda.如果你设置了它,那么所有令牌的声明都将被传递event.requestContext.authorizer.claims.
如果不使用lambda代理集成,那么你需要使用Body Mapping Template的Integration Request为拉姆达.application/jsonContent-Type 的示例模板是:
"context" : {
"sub" : "$context.authorizer.claims.sub",
"username" : "$context.authorizer.claims['cognito:username']",
"email" : "$context.authorizer.claims.email",
"userId" : "$context.authorizer.claims['custom:userId']"
}
Run Code Online (Sandbox Code Playgroud)
这期望用户池中有一个名为userId的自定义属性,当然它们可由客户端读取.
您不能对aws cognito-idp API使用id令牌,您需要使用访问令牌.但是,如果您的lambda已获得授权,则可以使用带有用户名的AdminGetUser调用.
| 归档时间: |
|
| 查看次数: |
2410 次 |
| 最近记录: |