2017-06-06 4 views
0

Bei der Verwendung von Benutzerpools für die Authentifizierung in AWS Cognito wird eine Kennwortrichtlinie konfiguriert. Diese Richtlinie ist die Regel, die die Erstellung eines Kennworts festlegt.Konsequente clientseitige Kennwortüberprüfungsregeln bei Verwendung von AWS Cognito

In der Benutzeroberfläche haben diese Regeln neu geschrieben werden Client-Seite Validierungen zu tun. Gibt es eine Möglichkeit, die clientseitigen Regeln mit den cognito-Benutzerpoolregeln zu synchronisieren?

Eine Möglichkeit, die ich mir vorstellen kann, ist die Verwendung von CloudFormation zum Erstellen eines UserPools und das Abrufen der Regeln aus einer Regeldatei, die dann während des Builds zum Aktualisieren der Validierungsregeln in der Benutzeroberfläche verwendet wird.

Gibt es eine verfeinerte Art und Weise, dies zu erreichen?

+0

Die meisten Passwortrichtlinien ändern sich nicht viel im Laufe der Zeit, haben Sie uns In welchem ​​Fall ändert sich das viel? Oder versuchen Sie, die Benutzeroberfläche für mehrere Benutzerpools mit unterschiedlichen Kennwortrichtlinien zu verwalten? – behrooziAWS

+0

Ja, ich entwerfe ein Multi-Tenant-System, das verschiedene Benutzerpools und somit unterschiedliche Passwortrichtlinien haben wird. – rd22

Antwort

0

Es gibt nichts aus der Box Sie hier um zu helfen. Da Sie wahrscheinlich die Benutzerpool-ID in Ihr Javascript eingeben müssen, würde ich diese Informationen neben der Benutzerpool-ID in einem Mapping speichern. Wenn Sie eine Seite für Tenant X bereitstellen müssen, verwenden Sie die Zuordnung, um die Benutzerpool-ID und die Kennwortrichtlinie von Tenant X zu suchen.

Wenn Sie Cloudformation verwenden, könnten Sie die Kennwortrichtlinie als Ausgang ausgegeben oder direkt als Eingabe verweisen, wenn Sie die Ressource erstellen, die den Mieter dient.

0

Die Kennwortrichtlinie eines Benutzerpools kann programmgesteuert abgerufen werden.

Beispiel output:

{ MinimumLength: 8, RequireUppercase: true, RequireLowercase: true, 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')); 
 
     } 
 
     } 
 
    }); 
 
    }) 
 
}