我正在尝试使用API网关和Lambda函数创建API。
基于用户组(而不是Cognito用户组),我希望提供对独立DynamoDB表的访问。
我遵循的方法是,为每个用户组创建一个单独的Cognito用户池。
当用户登录时,将使用相应的用户池对其进行身份验证。
为了调用后续的API,我计划使用Lambda authorizer。
用户将在HTTP头请求中传递ID令牌,我希望验证此ID令牌。
这是正确的方法吗?或者是否有更好的方法来实现此工作流程。
我们可以使用Cognito用户组吗?这是一种安全的方法吗?
我想严格地将一个用户组的表与另一个用户组的表分开。
我偶然发现了下面的链接,以验证ID令牌。
发布于 2019-07-09 08: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等协议的高度安全实现,这些协议使用自定义代码实现起来非常困难和复杂。
https://stackoverflow.com/questions/56945599
复制相似问题