如何在数据库(例如DynamoDB)中存储AWS Cognito用户池用户?

时间:2019-04-03 04:47:29

标签: amazon-dynamodb identityserver4 amazon-cognito aws-userpools

在我看来,“ AWS Cognito”是“ AWS的IdentityServer”。我做了一个POC-通过注册API调用创建了用户。在AWS Cognito用户池中创建用户,并返回访问令牌。但是,为了关联事物,我想在DynamoDB的用户表中而不是在用户池中创建用户。

预期的情况:

1)新用户->注册-> AWS Cognito->在DynamoDB中添加了新用户记录-> AWS Cognito返回访问令牌

2)现有活动用户->登录-> AWS Cognito->从DynamoDB检索用户详细信息-> AWS Cognito返回访问令牌

Qn -1:与在SQL Server DB表中创建IdentityServer用户类似。可以在AWS Cognito中完成吗?是否可以绕过用户池并从数据库获取用户数据?即使没有绕过,用户池能否从数据库表中映射其用户?

Qn-2:用户池用户存储在哪里?最终在数据库的某个地方?

注意:以下问题类似于我的问题,但尚未回答:

User sessions and storing aws cognito users in local DB

1 个答案:

答案 0 :(得分:1)

您的方案中不能绕过用户池。但是,您可以将用户映射到dynamoDB,甚至可以使用custom policy限制访问。要使用此策略,必须构造DynamoDB表,以便Cognito用户ID是分区键。

只需添加一个lambda触发器即可注册并登录,然后将用户添加到dynamoDB。添加您想要的任何内容(密码除外),因为您可以使用cognito进行身份验证,然后通过cognito ID限制行访问。

对于问题的第二部分,cognito有其自己的内部表。 AWS尚未具体说明它们使用的是什么,但是由于自定义属性的灵活性,我可能会猜测它是NoSQL。