首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Lambda authorizer的AWS Cognito和API网关

使用Lambda authorizer的AWS Cognito和API网关
EN

Stack Overflow用户
提问于 2019-07-09 12:58:04
回答 1查看 1.3K关注 0票数 2

我正在尝试使用API网关和Lambda函数创建API。

基于用户组(而不是Cognito用户组),我希望提供对独立DynamoDB表的访问。

我遵循的方法是,为每个用户组创建一个单独的Cognito用户池。

当用户登录时,将使用相应的用户池对其进行身份验证。

为了调用后续的API,我计划使用Lambda authorizer。

用户将在HTTP头请求中传递ID令牌,我希望验证此ID令牌。

这是正确的方法吗?或者是否有更好的方法来实现此工作流程。

我们可以使用Cognito用户组吗?这是一种安全的方法吗?

我想严格地将一个用户组的表与另一个用户组的表分开。

我偶然发现了下面的链接,以验证ID令牌。

https://github.com/awslabs/aws-support-tools/blob/master/Cognito/decode-verify-jwt/decode-verify-jwt.js

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-09 16:19:46

AWS提供了一些成熟的架构和工具来简化上述用例。

上述用例不需要多个用户池。这可以通过单用户池本身来处理。

简单的架构可以是UI->API网关->Lambda->DynamoDB

可以将Cognito用户池中的用户添加到组中,并使用IAM策略进行设置。然后,可以为IAM或cognito authorizer配置API网关。用于访问不同DynamoDb表的每个Lambda写入可以在API层被授权。

在这种情况下,不需要自定义授权器。

使用AWS Amplify进行用户身份验证和所有其他通信。Amplify将自己处理令牌传递部分,并编写任何额外的代码。在这种方法中,JWT令牌可以被读取/验证,并在客户端UI层和服务器代码(lambda)中逻辑使用。API网关默认使用相同的token进行授权(无需编写任何代码)。

Cognito用户池和身份池是企业级的亚马逊网络服务解决方案,亚马逊网络服务放大补充了Sigv4,SRP等协议的高度安全实现,这些协议使用自定义代码实现起来非常困难和复杂。

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

https://stackoverflow.com/questions/56945599

复制
相关文章

相似问题

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