首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有Authorizer的情况下,通过API网关将AWS认知用户数据提供给Lambda?

如何在没有Authorizer的情况下,通过API网关将AWS认知用户数据提供给Lambda?
EN

Stack Overflow用户
提问于 2020-01-06 18:03:42
回答 1查看 812关注 0票数 1

我有一个网站,使用AWS科尼图(通过放大)的用户登录。API位于一个单独的堆栈上,该堆栈与Serverless一起部署。

我试图有一个API端点,可以访问当前登录用户的认知用户池数据(用户名,电子邮件),如果是可用的。我能够做到这一点的唯一方法是通过API网关使用认知用户池授权器。

示例:

代码语言:javascript
复制
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的所有资源都是专门关于的,限制访问到端点,而不是将数据分层到请求.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-08 21:33:59

基于上面的评论,您希望匿名和登录用户通过相同的网关端点?

您仍然可以使用相同的设置,但可以从application中删除身份验证,并在应用程序中接受逻辑。

如果用户在登录时尝试访问您的服务,AWS放大将通过带有Id令牌的授权头发送到API网关,而API网关将将此标头传递给应用程序。您必须在应用程序中检查此授权头,并打开传递的Id令牌,以查找用户声明/属性并执行逻辑。对于没有此令牌的任何其他用户,都可以认为是匿名的。

如果在请求中找到令牌,则仍然需要验证令牌,以确保它是有效的令牌,然后提取声明/属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59616844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档