在AWS Cognito中使用用户池进行身份验证时,会配置密码策略。此策略是绑定密码创建的规则。
在UI中,必须重写这些规则以进行客户端验证。有没有办法将客户端规则与cognito用户池规则同步。
我能想到的一种方法是使用CloudFormation创建UserPool并让它从规则文件中获取规则,然后在构建期间使用该规则来更新UI中的验证规则。
有没有更精致的方法来实现这一目标?
答案 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,您可以输出密码策略作为输出,或者在构建为租户提供服务的资源时直接将其作为输入引用。