13

在我看来,“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:用户池用户存储在哪里?最终在数据库中的某个地方?

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

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

4

1 回答 1

10

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

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

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

于 2019-04-03T05:31:13.160 回答