【问题标题】:AWS Cognito : User creation and usernameAWS Cognito:用户创建和用户名
【发布时间】:2021-09-04 21:47:58
【问题描述】:

我正在尝试了解 CloudFormation(实际上是 SAM)中的 AWS Cognito 设置。

我使用了以下设置:

Resources:
  CognitoUserPool:
    Type: AWS::Cognito::UserPool
    Properties:
      UserPoolName: !Sub ${Project}-${Env}-CognitoUserPool
      Policies:
        PasswordPolicy:
          MinimumLength: 8
      UsernameAttributes:
        - email
      Schema:
        - AttributeDataType: String
          Name: email
          Required: false
  CognitoUserPoolClient:
    Type: 'AWS::Cognito::UserPoolClient'
    Properties:
      ClientName: !Sub ${Project}-${Env}-CognitoUserPoolClient
      GenerateSecret: false
      UserPoolId: !Ref CognitoUserPool
      ExplicitAuthFlows:
        - ALLOW_USER_PASSWORD_AUTH

我知道这应该允许用户使用他们的电子邮件作为他们的用户名。事实上,我可以通过 AWS Cognito 控制台使用电子邮件作为我的用户名来创建用户。

但是,AWS Cognito 仍然为用户名创建 UUID,如下所示:

由于收到错误消息,我无法使用电子邮件登录:

{"__type":"UserNotFoundException","message":"User does not exist."}

如果我使用 UUID,那么我没有错误并登录。知道我应该更改什么以使电子邮件作为登录选项工作吗?

【问题讨论】:

  • 可能Required: false 应该是true
  • 不,这似乎不是问题。奇怪的是,如果我使用这样的模板创建用户: CognitoUserPoolTestUser: Type: "AWS::Cognito::UserPoolUser" Properties: Username: my.name@myemail.com UserPoolId: !Ref CognitoUserPool 然后我可以使用电子邮件...
  • 把它归结为控制台中的摇摆不定。每当我在那里创建用户时,我必须为用户名和电子邮件使用相同的电子邮件地址。用户名值始终是一个 GUID。

标签: amazon-web-services amazon-cognito aws-sam


【解决方案1】:

我前段时间使用 AliasAttributes 而不是 UsernameAttributes,这允许使用常规用户名(或在我的情况下为 uuid)和电子邮件。

 AliasAttributes: 
    - 'email'

【讨论】:

  • 据我了解,这是做事的“老办法”。 UserNameAttributes 是新选项 AFAIK
  • UsernameAttributes 在较新的 cli 中工作正常。继续使用这个。 @FenryrMKIII 尝试改变那个错误吗?
猜你喜欢
  • 2020-09-11
  • 2017-12-03
  • 1970-01-01
  • 2019-09-04
  • 2017-04-23
  • 2019-03-15
  • 1970-01-01
  • 2019-07-31
  • 2021-08-13
相关资源
最近更新 更多