使用AWS Cognito

时间:2017-06-06 09:23:44

标签: amazon-web-services amazon-cognito

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

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

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

有没有更精致的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

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

示例输出:

{ 最小长度:8, RequireUppercase:true, RequireLowercase:是的, RequireNumbers:true, RequireSymbols:true }



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'));
        }
      }
    });
  })
}




答案 1 :(得分:0)

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

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