Direkt zum Inhalt

Wie implementiere ich die passwortlose Authentifizierung in meinem Cognito-Benutzerpool?

Lesedauer: 5 Minute
0

Ich möchte die passwortlose Authentifizierung in meinem Amazon Cognito-Benutzerpool implementieren.

Kurzbeschreibung

Amazon Cognito unterstützt zwei passwortlose Authentifizierungsmethoden:

Wichtig:

  • Wenn du in deinem Benutzerpool eine Multifaktor-Authentifizierung (MFA) benötigst, kannst du die passwortlose Authentifizierung nicht verwenden.
  • Nachdem sich ein Benutzer zum ersten Mal authentifiziert hat, kannst du bis zu 20 WebAuthn-Passkeys registrieren.
  • Die passwortlose Authentifizierung ist nur im AuthFlow für die auswahlbasierte Authentifizierung von ALLOW_USER_AUTH verfügbar.
  • Du musst über den Funktionsplan Essentials oder Plus verfügen, um die wahlbasierte Authentifizierung verwenden zu können.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (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.

OTP-Authentifizierung

OTP-Authentifizierung aktivieren

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-Cognito-Konsole.
  2. Wähle den Benutzerpool aus.
  3. Wähle unter Authentifizierung die Registerkarte Anmelden aus.
  4. Wähle unter Optionen für wahlbasierte Anmeldung die Option Bearbeiten aus.
  5. Wähle entweder Einmalpasswort per E-Mail oder Einmalpasswort per SMS aus.
  6. Wähle Änderungen speichern.
  7. Wähle App-Clients und dann deinen App-Client aus. Oder erstelle einen neuen.
  8. Wähle unter App-Client-Informationen die Option Bearbeiten aus.
  9. Wähle Auswahlbasierte Anmeldung: ALLOW_USER_AUTH aus.
  10. Wähle „Änderungen speichern“ aus.

OTP-Authentifizierung implementieren

Die passwortlose Authentifizierung funktioniert nur mit verwalteter Anmeldung. Die klassische gehostete Benutzeroberfläche unterstützt keine integrierten passwortlosen Authentifizierungsabläufe. Weitere Informationen findest du unter Wissenswertes zur Authentifizierung mit Benutzerpools.

Gehe wie folgt vor, um OTP zu implementieren:

  1. Richte die verwaltete Anmeldung ein.
  2. Konfiguriere deine Präfix-Domain so, dass Benutzer aufgefordert werden, ihren Benutzernamen auf der verwalteten Anmeldeseite einzugeben. Informationen zur Verwendung einer benutzerdefinierten Domain findest du unter Ihre eigene Domain für die verwaltete Anmeldung verwenden.

Gehe in der AWS CLI wie folgt vor:

  1. Führe den Befehl initiate-auth aus, um die Authentifizierung zu starten:

    aws cognito-idp initiate-auth --auth-flow USER_AUTH --auth-parameters USERNAME=example_username --client-id example_clientid

    Hinweis: Ersetze alle Beispielwerte durch deine Werte. Wenn du im vorherigen Befehl eine PREFERRED_CHALLENGE angibst, fahre mit Schritt 4 fort.

  2. Die Antwort umfasst die folgenden verfügbaren Herausforderungen:

    {
       "AvailableChallenges": [
          "EMAIL_OTP",
          "SMS_OTP",
          "PASSWORD"
        ],
       "Session": "[Session ID]"
    }

    Hinweis: Verwende die Sitzungs-ID aus der vorherigen Antwort in allen nachfolgenden Authentifizierungsbefehlen innerhalb desselben Authentifizierungsablaufs.

  3. Nachdem Benutzer ihre bevorzugte Authentifizierungsmethode ausgewählt haben, führe den Befehl respond-to-auth-challenge aus, um ihre Auswahl zu übermitteln:

    aws cognito-idp respond-to-auth-challenge --challenge-name SELECT_CHALLENGE --challenge-responses USERNAME=example_username,ANSWER=EMAIL_OTP --client-id example_clientid --session "SESSION_ID_FROM_PREVIOUS_RESPONSE"

    Hinweis: Wenn der Benutzer für die gewählte Herausforderungsmethode in Frage kommt, sendet Amazon Cognito einen Code an die E-Mail-Adresse oder Telefonnummer des Benutzers.

  4. Um die Authentifizierungsmethode mit einer bestimmten PREFERRED_CHALLENGE zu starten, führe den Befehl initiate-auth aus:

    aws cognito-idp initiate-auth --auth-flow USER_AUTH --auth-parameters USERNAME=example_username,PREFERRED_CHALLENGE=EMAIL_OTP --client-id example_clientid

    Hinweis: Ersetze EMAIL_OTP durch SMS_OTP, wenn du eine SMS-Authentifizierung bevorzugst. Wenn der Benutzer für die PREFERRED_CHALLENGE-Methode in Frage kommt, sendet Amazon Cognito einen Code an die E-Mail-Adresse oder Telefonnummer des Benutzers.

  5. Führe den Befehl respond-to-auth-challenge aus, um eine Antwort zurückzugeben:

    aws cognito-idp admin-respond-to-auth-challenge --challenge-name EMAIL_OTP --challenge-responses USERNAME=example_username,EMAIL_OTP_CODE=OTP_EMAIL --client-id example_clientid --session "SESSION_ID_FROM_PREVIOUS_RESPONSE"

    Hinweis: Ersetze EMAIL_OTP durch SMS_OTP und EMAIL_OTP_CODE durch SMS_OTP_CODE, wenn du die SMS-Authentifizierung verwendest.

Nach der OTP-Überprüfung erhalten deine Benutzer die JSON-Web-Tokens (JWTs), die Amazon Cognito generiert hat.

WebAuthn-Passkey-Authentifizierung

WebAuthn-Passkey-Authentifizierung aktivieren

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-Cognito-Konsole.
  2. Wähle den Benutzerpool aus.
  3. Wähle unter „Authentifizierung“ die Registerkarte Anmelden aus.
  4. Wähle unter Optionen für auswahlbasierte Anmeldung die Option Bearbeiten aus und füge dann Passkey zu den verfügbaren Optionen hinzu.
  5. Wähle Passkey bearbeiten aus und konfiguriere dann die folgenden Einstellungen:
    Stelle den Benutzerüberprüfungsmodus auf Bevorzugt oder Erforderlich ein.
    Stelle die Relying Party-ID auf deine Benutzerpool-Domain, benutzerdefinierte Domain oder Drittanbieter-Domain ein.
    Hinweis: Die Relying Party-ID steuert die Domain, die den Passkey für die Registrierung und Authentifizierung verwenden kann.
  6. Wähle Änderungen speichern.
  7. Wähle App-Clients und dann deinen App-Client aus. Oder erstelle einen neuen.
  8. Wähle unter App-Client-Informationen die Option Bearbeiten aus.
  9. Wähle Auswahlbasierte Anmeldung: ALLOW_USER_AUTH aus.
  10. Wähle „Änderungen speichern“ aus.

WebAuthn-Passkey für einen Benutzer in der verwalteten Anmeldung registrieren

Führe die folgenden Schritte aus:

  1. Richte die verwaltete Anmeldung für den App-Client ein.
    Hinweis: Amazon Cognito fordert automatisch zur Einrichtung des Passkeys für die Registrierung neuer Benutzer auf.

  2. Für aktuelle Benutzer, die keinen Hauptschlüssel registriert haben, konfiguriere deine Anwendung so, dass sie zum folgenden Authentifizierungsendpunkt umgeleitet werden:
    https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https://www.example.com 

  3. Tausche den Autorisierungscode gegen Tokens aus.

  4. Führe den folgenden Befehl list-web-authn-credentials aus, um nach registrierten Passkeys zu suchen:

    aws cognito-idp list-web-authn-credentials --access-token token-from-above-step

    Beispielausgabe:

    {
        "Credentials": [
            {
                "CredentialId": "r8DCexamplecredentialsaWMQ",
                "FriendlyCredentialName": "Chrome on Mac",
                "RelyingPartyId": "<cognito-prefix>.auth.us-east-1.amazoncognito.com",
                "AuthenticatorAttachment": "platform",
                "AuthenticatorTransports": [
                    "internal"
                ],
                "CreatedAt": "2025-06-27T07:41:15.800000+00:00"
            }
        ]
    }
  5. Wenn der vorhergehende Befehl eine leere Liste zurückgibt, leite die Benutzer zur folgenden URL für die verwaltete Anmeldung weiter, um mit der Registrierung des Passkeys zu beginnen:
    https://cognito-managed-login-domain/passkeys/add?client_id=example_client_id&redirect_uri=https://www.example.com
    Hinweis: Stelle sicher, dass du eine aktive Browsersitzung über den von Cognito verwalteten Login hast. Füge außerdem die erforderlichen OAuth-Parameter wie response_type und scope hinzu.

Auf der Seite Passkeys / URL hinzufügen fügt der Benutzer einen Passkey hinzu. Amazon Cognito leitet den Benutzer dann auf die Anwendungsseite weiter, die du im Parameter redirect_uri angegeben hast. Für nachfolgende Anmeldungen auf der verwalteten Anmeldeseite kann sich der Benutzer mit seinem registrierten Passkey anmelden.

Ähnliche Informationen

Autorisierungsmodelle für API- und SDK-Authentifizierung

Authentifizierung mit Amazon Cognito-Benutzerpools

Abläufe bei der Authentifizierung

AWS OFFICIALAktualisiert vor 5 Monaten