Wie aktiviere ich die TOTP-Multi-Faktor-Authentifizierung für Amazon Cognito-Benutzerpools?

Lesedauer: 3 Minute
0

Ich möchte die Multi-Faktor-Authentifizierung (MFA) für die Benutzer meiner App aktivieren. Ich möchte das mit einem zeitfgesteuerten Einmalpasswort (TOTP)-Token tun, das Amazon Cognito-Benutzerpools verwendet.

Kurzbeschreibung

Um TOTP MFA für App-Benutzer zu aktivieren, richte das TOTP-Softwaretoken-MFA für deinen Benutzerpool ein.

Wichtig: Bevor du das TOTP-Token konfigurierst, überprüfe die folgenden Anforderungen:

  • Du musst MFA zum Benutzerpool hinzufügen.
  • TOTP-Token können einem Benutzer erst zugeordnet werden, wenn der Benutzer versucht, sich bei deiner App anzumelden, oder wenn er bereits authentifiziert ist.
  • MFA unterstützt keine Verbundbenutzer in einem Benutzerpool.

Im Folgenden findest du ein Beispiel für die Verwendung von AWS Command Line Interface (AWS CLI) und Google Authenticator zur Einrichtung von TOTP MFA.

Lösung

Hinweis: Wenn du beim Ausführen von AWS CLI-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

  1. Führe den folgenden AWS-CLI-Befehl associate-software-token aus, um die Einrichtung des MFA-Token-Generators zu starten:

    aws cognito-idp associate-software-token --access-token eyJraWQiO........ua5Pq3NaA
    {
        "SecretCode":
        "AETQ6XXMDFYMEPFQQ7FD4HKXXXXAOY3MBXIVRBLRXX3SXLSHHWOA"
    }
  2. Öffne die Google Authenticator-Startseite und wähle dann Erste Schritte aus.

  3. Wähle Enter a setup key (Einen Setupschlüssel eingeben).

  4. Gib unter Account name (Kontoname) einen Kontonamen ein.
    Hinweis: Der Kontoname kann ein beliebiger Zeichenkettenbezeichner sein.

  5. Kopiere für die Texteingabe Your key (Dein Schlüssel) den Geheimcode, der mit dem Befehl AssociateSoftwareToken generiert wurde, den du in Schritt 1 ausgeführt hast, und füge ihn ein.

  6. Wähle Type of key (Schlüsseltyp) und dann Time based (Zeitgesteuert) aus.

  7. Bestätige das Software-Token, das das zeitgesteuerte Passwort verwendet, das auf dem Bildschirm und im folgenden Code angezeigt wird:

    aws cognito-idp verify-software-token --access-token eyJraWQiO........ua5Pq3NaA --user-code 269194 --friendly-device-name ExampleName
    {
        "Status": "SUCCESS"
    }
  8. Um die MFA-Konfiguration des Benutzers auf TOTP MFA zu konfigurieren, führe entweder den AWS-CLI-Befehl set-user-mfa-preference oder admin-set-user-mfa-preference aus:
    Beispiel für den Befehl set-user-mfa-preference

    aws cognito-idp set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --access-token eyJraWQiO........ua5Pq3NaA

    Hinweis: Mit diesem Befehl können Benutzer ihre eigene MFA-Konfiguration festlegen.
    Beispiel für den Befehl admin-set-user-mfa-preference

    aws cognito-idp admin-set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --username ExampleName --user-pool-id us-east-1_123456789

    Hinweis: Mit diesem Befehl kann ein Administrator die MFA-Konfiguration eines Benutzers festlegen.

  9. Um den ALLOW_ADMIN_USER_PASSWORD_AUTH-Flow für den Benutzerpool-App-Client zu aktivieren, öffne die Amazon Cognito-Konsole.

  10. Wähle Benutzerpools verwalten.

  11. Wähle deinen App-Client aus und wähle Details einblenden aus.

  12. Wähle Enable username password auth for admin APIs for authentication (ALLOW_ADMIN_USER_PASSWORD_AUTH) (Benutzernamen-Passwortauthentifizierung für Admin-APIs zur Authentifizierung aktivieren (ALLOW_ADMIN_USER_PASSWORD_AUTH)).

  13. Wähle App-Client-Änderungen speichern.

  14. Um das Setup zu testen, authentifiziere den Benutzer mit einer der folgenden Methoden:
    Die von Amazon Cognito gehostete Benutzeroberfläche.
    Die API-Aufrufe InitiateAuth, AdminInitiateAuth oder RespondToAuthChallenge in der AWS CLI.
    Hinweis: Um einen Benutzer mit einer der beiden Methoden zu authentifizieren, benötigst du das Passwort, den Benutzernamen und den Software-MFA-Code des Benutzers.
    Beispiel für den Befehl admin-initiate-auth

aws cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id 3n4b5urk1ft4fl3mg5e62d9ado --auth-flow ADMIN_USER_PASSWORD_AUTH --auth-parameters USERNAME=ExampleName,PASSWORD=P@ssw0rd

Hinweis: Ersetze die folgenden Variablen durch deine Informationen: user-pool-id, client-id, username und password.

Beispielausgabe des Befehls admin-initiate-auth

{    
    "ChallengeName": "SOFTWARE_TOKEN_MFA",
    "ChallengeParameters": {
        "FRIENDLY_DEVICE_NAME": "ExampleDevice",
        "USER_ID_FOR_SRP": "ExampleName"
    },
    "Session": "Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv"
}

Beispiel für den Befehl admin-respond-to-auth-challenge

aws cognito-idp admin-respond-to-auth-challenge --user-pool-id us-east-1_123456789 --client-id 3n4b5urk1ft4fl3mg5e62d9ado --challenge-name SOFTWARE_TOKEN_MFA --challenge-responses USERNAME=ExampleName,SOFTWARE_TOKEN_MFA_CODE=123456 --session  Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv

Hinweis: Ersetze die folgenden Variablen durch deine Informationen: client-id, username und software_token_MFA_Code.

Beispielausgabe des Befehls admin-respond-to-auth-challenge

{    
    "AuthenticationResult": {
        "ExpiresIn": 3600,
        "RefreshToken": "eyJjdHkiOiJKV1QiLCJlbmMi.......dlbjrtyizlLzZZ5fjjCgL__AVHEzYycjJs_h3i-ly_KixDNtz9VEC",

        "TokenType": "Bearer",
        "NewDeviceMetadata": {

            "DeviceKey": "us-east-1_28abrd7-10f7-9fc6-a931-3ede1c8ckd75",
            "DeviceGroupKey": "-Gqkj3brS"

        },
        "IdToken": "eyJraWQiOiIzcFFSV29Pb........mNMbE_vvPkQYBuA9ackoER1aSABFGaKK4BpgPjMn7la_A",
        "AccessToken": "eyJraWQiOi...........qwvQq4awt63TyWw"

    },
    "ChallengeParameters": {}
}

Ähnliche Informationen

Authentifizierung mit Amazon Cognito-Benutzerpools

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten