【问题标题】:Consistent client side password validation rules when using AWS Cognito使用 AWS Cognito 时一致的客户端密码验证规则
【发布时间】:2017-11-07 05:49:23
【问题描述】:

在 AWS Cognito 中使用用户池进行身份验证时,会配置密码策略。该策略是绑定密码创建的规则。

在 UI 中,必须重新编写这些规则才能进行客户端验证。有没有办法将客户端规则与 cognito 用户池规则同步。

我能想到的一种方法是使用 CloudFormation 创建一个 UserPool 并让它从规则文件中获取规则,然后在构建期间使用该规则来更新 UI 中的验证规则。

有没有更精细的方法来实现这一点?

【问题讨论】:

  • 大多数密码策略不会随着时间的推移而发生很大变化,您是否有一个使用案例会发生很大变化?或者您是否尝试使用不同的密码策略管理多个用户池的用户界面?
  • 是的,我正在设计一个多租户系统,它会有不同的用户池,因此会有不同的密码策略。

标签: amazon-web-services amazon-cognito


【解决方案1】:

可以通过编程方式获取用户池的密码策略。

示例输出:

{ 最小长度:8, 要求大写:真, 要求小写:真, 要求编号:真, 要求符号:真 }

const identityServiceProvider = new AWS.CognitoIdentityServiceProvider({
  region: process.env.AWS_REGION
});

/*
Retrieve the password policy of the Cognito user pool.
*/
exports.getPasswordPolicy = () => {
  return new Promise((resolve, reject) => {
    identityServiceProvider.describeUserPool({
      "UserPoolId": process.env.COGNITO_USER_POOL_ID
    }, (error, data) => {
      if (error) {
        reject(error);
      } else {
        if (data && data.UserPool && data.UserPool.Policies && data.UserPool.Policies.PasswordPolicy) {
          resolve(data.UserPool.Policies.PasswordPolicy);
        }
        else {
          reject(new Error('Unable to fetch password policy'));
        }
      }
    });
  })
}

【讨论】:

    【解决方案2】:

    这里没有什么可以帮助您。由于您可能需要将用户池 ID 传递到您的 javascript 中,因此我会将此信息与用户池 ID 一起存储在映射中。当您需要为租户 X 提供页面时,请使用映射来查找租户 X 的用户池 ID 和密码策略。

    如果您使用的是 cloudformation,您可以在构建服务于租户的资源时将密码策略作为输出输出或直接将其作为输入引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-25
      • 2019-02-13
      • 2020-12-11
      • 2018-06-03
      • 2018-12-29
      • 1970-01-01
      • 2021-11-10
      • 2015-09-17
      相关资源
      最近更新 更多