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

MAK*_*MAK 11 amazon-dynamodb amazon-cognito identityserver4 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 数据库表中创建 IdentityServer 用户。这可以在 AWS Cognito 中完成吗?可以绕过用户池并从数据库中获取用户数据吗?即使没有绕过,用户池是否可以从数据库表映射其用户?

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

注意:以下问题看起来与我的相似,但尚未回答:

用户会话并将 aws cognito 用户存储在本地数据库中

Nin*_*wad 8

在您的场景中无法绕过用户池。但是,您可以将您的用户映射到 dynamoDB,甚至可以使用自定义策略限制访问。要使用此策略,您必须构建 DynamoDB 表,以便 Cognito 用户 ID 是分区键。

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

至于你问题的第二部分,cognito 有自己的内部表。AWS 没有具体说明他们使用什么,但由于自定义属性的灵活性,我敢猜测它是 NoSQL。