我有一个网站,使用AWS科尼图(通过放大)的用户登录。API位于一个单独的堆栈上,该堆栈与Serverless一起部署。
我试图有一个API端点,可以访问当前登录用户的认知用户池数据(用户名,电子邮件),如果是可用的。我能够做到这一点的唯一方法是通过API网关使用认知用户池授权器。
示例:
functions:
getMe:
handler: /endpoints/myService.get
events:
- http:
path: /myService
method: GET
cors: true
authorizer:
type: COGNITO_USER_POOLS
authorizerId: ${self:custom.apiGatewayAuthorizerId.${self:custom.stage}}
其中,authorizerId设置为在AWS控制台的API页面中找到的6个字符的Authorizer ID。但是,这个阻止所有未经验证的通信量。这不是我想要的,因为我有许多服务应该可以被匿名和登录用户访问。我只想为已登录的用户个性化数据。
是否有任何方法允许流量,并通过API网关将认知用户参数传递给Lambda (如果它们是可用的)
我所能找到的关于认知+ API + Lambda的所有资源都是专门关于的,限制访问到端点,而不是将数据分层到请求.
发布于 2020-01-08 13:33:59
基于上面的评论,您希望匿名和登录用户通过相同的网关端点?
您仍然可以使用相同的设置,但可以从application中删除身份验证,并在应用程序中接受逻辑。
如果用户在登录时尝试访问您的服务,AWS放大将通过带有Id令牌的授权头发送到API网关,而API网关将将此标头传递给应用程序。您必须在应用程序中检查此授权头,并打开传递的Id令牌,以查找用户声明/属性并执行逻辑。对于没有此令牌的任何其他用户,都可以认为是匿名的。
如果在请求中找到令牌,则仍然需要验证令牌,以确保它是有效的令牌,然后提取声明/属性。
https://stackoverflow.com/questions/59616844
复制相似问题