AWS Cognito 用户池通过 cloudformation 文件

Posted

技术标签:

【中文标题】AWS Cognito 用户池通过 cloudformation 文件【英文标题】:AWS Cognito Userpool via cloudformation file 【发布时间】:2018-02-11 21:01:26 【问题描述】:

我正在尝试将我的 cognito 用户池编码为 cloudformation 模板。然而,我遇到了一个悬而未决的问题:如何定义标准属性? Cognito 是否会知道 Schema 中的 birthdate 是标准生日 - 并对其进行验证? cloudformation 模板中定义的属性Schema 如何映射到标准的非自定义属性,如emailbirthdate、...?

更多详细信息:AWS Cognito 区分标准属性和自定义属性。这种分离非常重要,因为标准属性已针对其格式进行验证:例如,emailbirthdate 仅接受 AWS 定义的特定格式。

因此我的问题是:AWS Cognito 如何将 cloudformation Schema 定义的属性映射到标准 AWS Cognito 属性?有没有,如果有的话,通过属性名称的标识?

另见:

AWS Cognito Cloudformation Schema

某人创建的示例:Cloudformation example

【问题讨论】:

通过 cloudformation 更新架构时要小心,它会重新部署您的整个用户池 【参考方案1】:

您需要使用 SchemaAttributes 属性。对于标准属性,它们必须根据 Open ID Connect 规范命名 -

http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims

http://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html

通过这样做,它们将适当地映射,并且您可以在属性上设置其他属性,例如必需。似乎需要更新文档以使其更加清晰。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-schemaattribute.html

【讨论】:

谢谢,但据我了解,这并不能解决我的问题。首先:只有SchemaAliasAttributes 属性,我假设你说的是这些。现在AliasAttributes 仅支持电话、邮件、用户名的 3 个值 - 据我了解,适用于需要别名的情况。我没有 - 我的问题更简单地说:如何定义 standard 属性? Cognito 会知道 Schema 中的 birthdate 是标准的 birthdate - 并对其进行验证吗? 更新答案。 我不得不尝试几次,所以只是想总结一下以节省其他人几分钟。这正是我想要的。如果您想说使“电子邮件”成为“必需”的标准属性,请将其添加到“属性”>“架构”下,然后像他们说的那样使用名称:“电子邮件”(来自 openid) 是否需要在Schema 中定义每个标准属性?为了能够在AWS::Cognito::UserPoolClientReadAttributes中使用它们 对文档的绝对讽刺。谢谢你的解释!

以上是关于AWS Cognito 用户池通过 cloudformation 文件的主要内容,如果未能解决你的问题,请参考以下文章

没有密码的 AWS Cognito 用户池

如何使用 AWS Cognito 中的现有用户池生成 aws-exports.js?

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

AWS API Gateway + Cognito 用户池授权方 + Lambda - 我需要设置哪些 HTTP 标头和权限?

是否可以在没有 Cognito 用户池的情况下使用 AWS Amplify Analytics?

AWS Cognito:Cognito 用户池的元数据 URL 在哪里?