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
如何映射到标准的非自定义属性,如email
、birthdate
、...?
更多详细信息:AWS Cognito 区分标准属性和自定义属性。这种分离非常重要,因为标准属性已针对其格式进行验证:例如,email
和 birthdate
仅接受 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
【讨论】:
谢谢,但据我了解,这并不能解决我的问题。首先:只有Schema
和AliasAttributes
属性,我假设你说的是这些。现在AliasAttributes
仅支持电话、邮件、用户名的 3 个值 - 据我了解,适用于需要别名的情况。我没有 - 我的问题更简单地说:如何定义 standard 属性? Cognito 会知道 Schema
中的 birthdate
是标准的 birthdate
- 并对其进行验证吗?
更新答案。
我不得不尝试几次,所以只是想总结一下以节省其他人几分钟。这正是我想要的。如果您想说使“电子邮件”成为“必需”的标准属性,请将其添加到“属性”>“架构”下,然后像他们说的那样使用名称:“电子邮件”(来自 openid)
是否需要在Schema
中定义每个标准属性?为了能够在AWS::Cognito::UserPoolClient
的ReadAttributes
中使用它们
对文档的绝对讽刺。谢谢你的解释!以上是关于AWS Cognito 用户池通过 cloudformation 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AWS Cognito 中的现有用户池生成 aws-exports.js?
如何将 AWS Cognito 用户池用户存储在数据库(例如 DynamoDB)中?
AWS API Gateway + Cognito 用户池授权方 + Lambda - 我需要设置哪些 HTTP 标头和权限?