View a markdown version of this page

Authentifizierungsabläufe - Amazon Cognito

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Authentifizierungsabläufe

Der Prozess der Authentifizierung mit Amazon Cognito-Benutzerpools lässt sich am besten als ein Ablauf beschreiben, bei dem Benutzer eine erste Auswahl treffen, Anmeldeinformationen einreichen und auf zusätzliche Herausforderungen reagieren. Wenn Sie die verwaltete Anmeldeauthentifizierung in Ihrer Anwendung implementieren, verwaltet Amazon Cognito den Ablauf dieser Aufforderungen und Herausforderungen. Wenn Sie Abläufe mit einem AWS SDK in Ihrem Anwendungs-Backend implementieren, müssen Sie die Logik der Anfragen erstellen, Benutzer zur Eingabe auffordern und auf Herausforderungen reagieren.

Als Anwendungsadministrator bestimmen Ihre Benutzermerkmale, Sicherheitsanforderungen und Ihr Autorisierungsmodell dabei, wie Sie Benutzern die Anmeldung ermöglichen möchten. Stellen Sie sich die folgenden Fragen.

Wenn Sie die Antworten auf diese Fragen haben, erfahren Sie, wie Sie die entsprechenden Funktionen aktivieren und sie in den Authentifizierungsanforderungen Ihrer Anwendung implementieren.

Nachdem Sie die Anmeldeabläufe für einen Benutzer eingerichtet haben, können Sie dessen aktuellen Status in Bezug auf MFA- und auswahlbasierte Authentifizierungsfaktoren anhand von Anfragen an den API-Vorgang überprüfen. GetUserAuthFactors Für diesen Vorgang ist eine Autorisierung mit dem Zugriffstoken eines angemeldeten Benutzers erforderlich. Es gibt Benutzerauthentifizierungsfaktoren und MFA-Einstellungen zurück.

Sign-in mit Drittanbietern IdPs

Amazon Cognito-Benutzerpools dienen als Zwischenvermittlung für Authentifizierungssitzungen zwischen Diensten IdPs wie Sign in with Apple, Login with Amazon und OpenID Connect (OIDC). Dieser Vorgang wird auch als Verbundanmeldung oder Verbundauthentifizierung bezeichnet. Bei der Verbundauthentifizierung werden keine der Authentifizierungsabläufe verwendet, die Sie in Ihren App-Client integrieren können. Stattdessen weisen Sie Ihrem App-Client einen konfigurierten Benutzerpool IdPs zu. Die Verbundanmeldung erfolgt, wenn Benutzer ihren IdP in der verwalteten Anmeldung auswählen oder Ihre Anwendung eine Sitzung mit einer Weiterleitung zu ihrer IdP-Anmeldeseite aufruft.

Bei der Verbundanmeldung delegieren Sie primäre und MFA-Authentifizierungsfaktoren an den IdP des Benutzers. Amazon Cognito fügt die anderen erweiterten Flows in diesem Abschnitt keinem Verbundbenutzer hinzu, es sei denn, Sie verknüpfen sie mit einem lokalen Benutzer. Verbundene Benutzer ohne Verknüpfung haben zwar Benutzernamen, aber sie sind ein Speicher mit zugewiesenen Attributdaten, der unabhängig vom browserbasierten Ablauf normalerweise nicht für die Anmeldung verwendet wird.

Ressourcen für die Implementierung

Sign-in mit persistenten Passwörtern

In Amazon Cognito-Benutzerpools hat jeder Benutzer einen Benutzernamen. Dies kann eine Telefonnummer, eine E-Mail-Adresse oder eine gewählte oder vom Administrator bereitgestellte Kennung sein. Benutzer dieses Typs können sich mit ihrem Benutzernamen und ihrem Passwort anmelden und optional MFA angeben. Benutzerpools können die Anmeldung mit Benutzernamen und Passwort mit öffentlichen oder IAM-authorized API-Vorgängen und SDK-Methoden durchführen. Ihre Anwendung kann das Passwort zur Authentifizierung direkt an Ihren Benutzerpool senden. Ihr Benutzerpool reagiert mit zusätzlichen Herausforderungen oder den JSON-Web-Tokens (JWTs), die das Ergebnis einer erfolgreichen Authentifizierung sind.

Activate password sign-in

Um die clientbasierte Authentifizierung mit Benutzername und Passwort zu aktivieren, konfigurieren Sie Ihren App-Client so, dass dies zulässig ist. Navigieren Sie in der Amazon Cognito-Konsole in Ihrer Benutzerpool-Konfiguration unter Anwendungen zum App-Clients-Menü. Um die Anmeldung mit einfachem Passwort für eine clientseitige mobile oder native App zu ermöglichen, bearbeiten Sie einen App-Client und wählen Sie unter Authentifizierungsabläufe die Option Mit Benutzername und Passwort anmelden: ALLOW_USER_PASSWORD_AUTH aus. Um die Anmeldung mit einfachem Passwort für eine serverseitige App zuzulassen, bearbeiten Sie einen App-Client und wählen Sie Mit serverseitigen Administratoranmeldedaten anmelden: ALLOW_ADMIN_USER_PASSWORD_AUTH.

Um die wahlbasierte Authentifizierung mit Benutzername und Passwort zu aktivieren, konfigurieren Sie Ihren App-Client so, dass dies zulässig ist. Bearbeiten Sie Ihren App-Client und wählen Sie die Choice-based Anmeldung: ALLOW_USER_AUTH.

Ein Screenshot aus der Amazon Cognito-Konsole, der die Auswahl einfacher Passwort-Authentifizierungsabläufe für einen App-Client veranschaulicht. Die Optionen ALLOW_USER_PASSWORD_AUTH, ALLOW_ADMIN_USER_PASSWORD_AUTH und ALLOW_USER_AUTH wurden ausgewählt.

Um zu überprüfen, ob die Passwortauthentifizierung in auswahlbasierten Authentifizierungsabläufen verfügbar ist, navigieren Sie zum Menü und lesen Sie den Abschnitt unter Optionen für die auswahlbasierte Anmeldung. Sign-in Sie können sich mit einer einfachen Passwortauthentifizierung anmelden, wenn das Feld Passwort unter Verfügbare Optionen angezeigt wird. Die Passwortoption umfasst die Authentifizierungsvarianten „Plain“ und „SRP“ mit Benutzername-Passwort.

Ein Screenshot aus der Amazon Cognito-Konsole, der die Wahl der Passwortauthentifizierung in der auswahlbasierten USER_AUTH-Anmeldekonfiguration für einen Benutzerpool veranschaulicht. Die Passwortoption wird als aktiv angezeigt.

Konfigurieren Sie ExplicitAuthFlows mit Ihren bevorzugten Authentifizierungsoptionen für Benutzername und Passwort in einer OR-Anfrage. CreateUserPoolClient UpdateUserPoolClient

"ExplicitAuthFlows": [ "ALLOW_USER_PASSWORD_AUTH", "ALLOW_ADMIN_USER_PASSWORD_AUTH", "ALLOW_USER_AUTH" ]

Konfigurieren Sie in einer CreateUserPool UpdateUserPool ODER-Anfrage die Policies auswahlbasierten Authentifizierungsabläufe, die Sie unterstützen möchten. Der PASSWORD Wert in AllowedFirstAuthFactors umfasst sowohl die Optionen für den Authentifizierungsablauf mit einfachem Passwort als auch die SRP-Authentifizierungsoption.

"Policies": { "SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "EMAIL_OTP", "WEB_AUTHN" ] } }
Choice-based sign-in with a password

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung bei einer Anwendung anzumelden, konfigurieren Sie den Text Ihrer Anfrage oder wie folgt. AdminInitiateAuth InitiateAuth Diese Anmeldeanforderung ist erfolgreich oder geht zur nächsten Herausforderung über, wenn der aktuelle Benutzer für die Authentifizierung mit Benutzername/Passwort in Frage kommt. Andernfalls wird mit einer Liste der verfügbaren Herausforderungen für die Authentifizierung mit dem primären Faktor reagiert. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

{ "AuthFlow": "USER_AUTH", "AuthParameters": { "USERNAME" : "testuser", "PREFERRED_CHALLENGE" : "PASSWORD", "PASSWORD" : "[User's password]" }, "ClientId": "1example23456789" }

Sie können den PREFERRED_CHALLENGE Wert auch weglassen und eine Antwort erhalten, die eine Liste der für den Benutzer in Frage kommenden Anmeldefaktoren enthält.

{ "AuthFlow": "USER_AUTH", "AuthParameters": { "USERNAME" : "testuser" }, "ClientId": "1example23456789" }

Wenn Sie keine bevorzugte Herausforderung eingereicht haben oder der eingereichte Benutzer nicht für seine bevorzugte Herausforderung berechtigt ist, gibt Amazon Cognito eine Liste mit Optionen in zurück. AvailableChallenges Wenn das Feld „ChallengeNamevon“ AvailableChallenges enthältPASSWORD, können Sie die Authentifizierung mit einer Antwort RespondToAuthChallenge AdminRespondToAuthChallenge oder einer Anfrage im folgenden Format fortsetzen. Sie müssen einen Session Parameter übergeben, der die Challenge-Antwort mit der API-Antwort auf Ihre erste Anmeldeanforderung verknüpft. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

{ "ChallengeName": "PASSWORD", "ChallengeResponses": { "USERNAME" : "testuser", "PASSWORD" : "[User's Password]" }, "ClientId": "1example23456789", "Session": "[Session ID from the previous response" }

Amazon Cognito reagiert auf berechtigte und erfolgreiche Preferred-Challenge-Anfragen und PASSWORD Challenge-Antworten mit Tokens oder einer zusätzlichen erforderlichen Herausforderung wie der Multifaktor-Authentifizierung (MFA).

Client-based sign-in with a password

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung bei einer clientseitigen App anzumelden, konfigurieren Sie den Text Ihrer Anfrage wie folgt. InitiateAuth Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

{ "AuthFlow": "USER_PASSWORD_AUTH", "AuthParameters": { "USERNAME" : "testuser", "PASSWORD" : "[User's password]" }, "ClientId": "1example23456789" }

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung bei einer serverseitigen App anzumelden, konfigurieren Sie den Text Ihrer AdminInitiateAuth Anfrage wie folgt. Ihre Anwendung muss diese Anfrage mit Anmeldeinformationen signieren. AWS Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

{ "AuthFlow": "ADMIN_USER_PASSWORD_AUTH", "AuthParameters": { "USERNAME" : "testuser", "PASSWORD" : "[User's password]" }, "ClientId": "1example23456789" }

Amazon Cognito reagiert auf erfolgreiche Anfragen mit Tokens oder einer zusätzlichen erforderlichen Herausforderung wie der Multifaktor-Authentifizierung (MFA).

Sign-in mit persistenten Passwörtern und sicherer Nutzlast

Eine andere Form der Anmeldemethoden für Benutzername und Passwort in Benutzerpools ist das Secure Remote Password (SRP) -Protokoll. Bei dieser Option wird der Nachweis der Kenntnis eines Kennworts — ein Passwort-Hash und ein Salt — gesendet, den Ihr Benutzerpool überprüfen kann. Da die Anfrage an Amazon Cognito keine lesbaren geheimen Informationen enthält, ist Ihre Anwendung die einzige Entität, die die von Benutzern eingegebenen Passwörter verarbeitet. Die SRP-Authentifizierung beinhaltet mathematische Berechnungen, die am besten mit einer vorhandenen Komponente durchgeführt werden, die Sie in Ihr SDK importieren können. SRP wird in der Regel in clientseitigen Anwendungen wie mobilen Apps implementiert. Weitere Informationen zum Protokoll finden Sie auf der Stanford SRP-Homepage. Wikipedia hat auch Ressourcen und Beispiele. Eine Vielzahl von öffentlichen Bibliotheken steht zur Verfügung, um die SRP-Berechnungen für Ihre Authentifizierungsabläufe durchzuführen.

Die Initiate-Challenge-Respond-Sequenz der Amazon Cognito-Authentifizierung validiert Benutzer und ihre Passwörter mit SRP. Sie müssen Ihren Benutzerpool und App-Client so konfigurieren, dass sie die SRP-Authentifizierung unterstützen, und dann die Logik der Anmeldeanfragen und Challenge-Antworten in Ihrer Anwendung implementieren. Ihre SRP-Bibliotheken können die Zufallszahlen und berechneten Werte generieren, die Ihrem Benutzerpool zeigen, dass Sie im Besitz eines Benutzerkennworts sind. Ihre Anwendung füllt diese berechneten Werte in die ChallengeParameters Felder JSON-formatted AuthParameters und in den Amazon Cognito-Benutzerpools, API-Operationen und SDK-Methoden für die Authentifizierung aus.

Activate SRP sign-in

Um die clientbasierte Authentifizierung mit Benutzername und SRP zu aktivieren, konfigurieren Sie Ihren App-Client so, dass dies zulässig ist. Navigieren Sie in der Amazon Cognito-Konsole in Ihrer Benutzerpool-Konfiguration unter Anwendungen zum App-Clients-Menü. Um die SRP-Anmeldung für eine clientseitige mobile oder native App zu ermöglichen, bearbeiten Sie einen App-Client und wählen Sie unter Authentifizierungsabläufe die Option Mit sicherem Remote-Passwort (SRP) anmelden: ALLOW_USER_SRP_AUTH aus.

Um die wahlbasierte Authentifizierung mit Benutzername und SRP zu aktivieren, bearbeiten Sie Ihren App-Client und wählen Sie die Anmeldung: ALLOW_USER_AUTH. Choice-based

Ein Screenshot aus der Amazon Cognito-Konsole, der die Auswahl sicherer Remote-Passwortauthentifizierungsabläufe für einen App-Client veranschaulicht. Die Optionen ALLOW_USER_SRP_AUTH und ALLOW_USER_AUTH wurden ausgewählt.

Um zu überprüfen, ob die SRP-Authentifizierung in Ihren auswahlbasierten Authentifizierungsabläufen verfügbar ist, navigieren Sie zum Menü und lesen Sie den Abschnitt unter Optionen für die auswahlbasierte Anmeldung. Sign-in Sie können sich mit der SRP-Authentifizierung anmelden, wenn das Passwort unter Verfügbare Optionen sichtbar ist. Die Option Passwort umfasst die Authentifizierungsvarianten Klartext und SRP Benutzername-Passwort.

Ein Screenshot aus der Amazon Cognito-Konsole, der die Wahl der Passwortauthentifizierung in der auswahlbasierten USER_AUTH-Anmeldekonfiguration für einen Benutzerpool veranschaulicht. Die Passwortoption wird als aktiv angezeigt.

Konfigurieren Sie ExplicitAuthFlows mit Ihren bevorzugten Authentifizierungsoptionen für Benutzername und Passwort in einer ODER-Anfrage. CreateUserPoolClient UpdateUserPoolClient

"ExplicitAuthFlows": [ "ALLOW_USER_SRP_AUTH", "ALLOW_USER_AUTH" ]

Konfigurieren Sie in einer CreateUserPool UpdateUserPool ODER-Anfrage die Policies auswahlbasierten Authentifizierungsabläufe, die Sie unterstützen möchten. Der PASSWORD Wert in AllowedFirstAuthFactors umfasst sowohl die Optionen für den Authentifizierungsablauf im Klartext-Passwort als auch die SRP-Authentifizierungsoption.

"Policies": { "SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "EMAIL_OTP", "WEB_AUTHN" ] } }
Choice-based sign-in with SRP

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung mit SRP bei einer Anwendung anzumelden, konfigurieren Sie den Text Ihrer Anfrage oder wie folgt. AdminInitiateAuth InitiateAuth Diese Anmeldeanforderung ist erfolgreich oder geht zur nächsten Herausforderung über, wenn der aktuelle Benutzer für die Authentifizierung mit Benutzername/Passwort in Frage kommt. Andernfalls wird mit einer Liste der verfügbaren Herausforderungen für die Authentifizierung mit dem primären Faktor reagiert. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

{ "AuthFlow": "USER_AUTH", "AuthParameters": { "USERNAME" : "testuser", "PREFERRED_CHALLENGE" : "PASSWORD_SRP", "SRP_A" : "[g^a % N]" }, "ClientId": "1example23456789" }

Sie können den PREFERRED_CHALLENGE Wert auch weglassen und eine Antwort erhalten, die eine Liste der für den Benutzer in Frage kommenden Anmeldefaktoren enthält.

{ "AuthFlow": "USER_AUTH", "AuthParameters": { "USERNAME" : "testuser" }, "ClientId": "1example23456789" }

Wenn Sie keine bevorzugte Herausforderung eingereicht haben oder der eingereichte Benutzer nicht für seine bevorzugte Herausforderung berechtigt ist, gibt Amazon Cognito eine Liste mit Optionen in zurück. AvailableChallenges Wenn das Feld „ChallengeNamevon“ AvailableChallenges enthältPASSWORD_SRP, können Sie die Authentifizierung mit einer Antwort RespondToAuthChallenge AdminRespondToAuthChallenge oder einer Anfrage im folgenden Format fortsetzen. Sie müssen einen Session Parameter übergeben, der die Challenge-Antwort mit der API-Antwort auf Ihre erste Anmeldeanforderung verknüpft. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

{ "ChallengeName": "PASSWORD_SRP", "ChallengeResponses": { "USERNAME" : "testuser", "SRP_A" : "[g^a % N]" }, "ClientId": "1example23456789", "Session": "[Session ID from the previous response" }

Amazon Cognito reagiert auf berechtigte Preferred-Challenge-Anfragen und auf PASSWORD_SRP Challenge-Antworten mit einer Herausforderung. PASSWORD_VERIFIER Ihr Kunde muss die SRP-Berechnungen abschließen und auf die Herausforderung in einer ODER-Anfrage antworten. RespondToAuthChallenge AdminRespondToAuthChallenge

{ "ChallengeName": "PASSWORD_VERIFIER", "ChallengeResponses": { "PASSWORD_CLAIM_SIGNATURE" : "string", "PASSWORD_CLAIM_SECRET_BLOCK" : "string", "TIMESTAMP" : "string" }, "ClientId": "1example23456789", "Session": "[Session ID from the previous response]" }

Bei einer erfolgreichen Antwort auf die PASSWORD_VERIFIER Herausforderung stellt Amazon Cognito Tokens oder eine andere erforderliche Herausforderung wie die Multifaktor-Authentifizierung (MFA) aus.

Client-based sign-in with SRP

Die SRP-Authentifizierung ist bei der clientseitigen Authentifizierung üblicher als bei der serverseitigen. Sie können die SRP-Authentifizierung jedoch mit und verwenden. InitiateAuth AdminInitiateAuth Um einen Benutzer bei einer Anwendung anzumelden, konfigurieren Sie den Text Ihrer AdminInitiateAuth Anfrage InitiateAuth oder wie folgt. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

Der Client generiert SRP_A aus einem Generator Modulo N g, das mit einer geheimen Zufallszahl a potenziert wird.

{ "AuthFlow": "USER_SRP_AUTH", "AuthParameters": { "USERNAME" : "testuser", "SRP_A" : "[g^a % N]" }, "ClientId": "1example23456789" }

Amazon Cognito reagiert mit einer PASSWORD_VERIFIER-Aufgabe. Ihr Kunde muss die SRP-Berechnungen abschließen und auf die Herausforderung in einer RespondToAuthChallenge AdminRespondToAuthChallenge ODER-Anfrage antworten.

{ "ChallengeName": "PASSWORD_VERIFIER", "ChallengeResponses": { "PASSWORD_CLAIM_SIGNATURE" : "string", "PASSWORD_CLAIM_SECRET_BLOCK" : "string", "TIMESTAMP" : "string" }, "ClientId": "1example23456789", "Session": "[Session ID from the previous response]" }

Bei einer erfolgreichen Antwort auf die PASSWORD_VERIFIER Herausforderung stellt Amazon Cognito Tokens oder eine andere erforderliche Herausforderung wie die Multifaktor-Authentifizierung (MFA) aus.

Passwortlose Anmeldung mit Einmalpasswörtern

Passwörter können verloren gehen oder gestohlen werden. Möglicherweise möchten Sie nur überprüfen, ob Ihre Benutzer Zugriff auf eine verifizierte E-Mail-Adresse, Telefonnummer oder Authentifizierungs-App haben. Die Lösung hierfür ist eine passwortlose Anmeldung. Ihre Anwendung kann Benutzer zur Eingabe ihres Benutzernamens, ihrer E-Mail-Adresse oder Telefonnummer auffordern. Amazon Cognito generiert dann ein Einmalpasswort (OTP), einen Code, den sie bestätigen müssen. Ein erfolgreicher Code schließt die Authentifizierung ab.

One-time Die Passwort-Authentifizierungsabläufe (OTP) sind nicht mit der erforderlichen Multifaktor-Authentifizierung (MFA) in Ihrem Benutzerpool kompatibel. Die Hauptschlüsselauthentifizierung mit Benutzerüberprüfung kann die MFA-Anforderungen erfüllen, wenn Sie diese Option festlegen. FactorConfiguration MULTI_FACTOR_WITH_USER_VERIFICATION Wenn MFA in Ihrem Benutzerpool optional ist, können sich Benutzer, die MFA aktiviert haben, nicht mit einem OTP-First-Faktor anmelden. Benutzer, die keine MFA-Präferenz in einem MFA-optional Benutzerpool haben, können sich mit kennwortlosen Faktoren anmelden. Weitere Informationen finden Sie unter Wissenswertes über den Benutzerpool MFA.

Wenn ein Benutzer einen Code, den er im Rahmen der kennwortlosen Authentifizierung in einer SMS oder E-Mail-Nachricht erhalten hat, korrekt eingibt, markiert Ihr Benutzerpool zusätzlich zur Authentifizierung des Benutzers die nicht verifizierte E-Mail-Adresse oder das Telefonnummerattribut des Benutzers als verifiziert. Der Benutzerstatus hat sich ebenfalls von UNCONFIRMED zu geändertCONFIRMED, unabhängig davon, ob Sie Ihren Benutzerpool so konfiguriert haben, dass E-Mail-Adressen oder Telefonnummern automatisch verifiziert werden.

Neue Optionen mit passwortloser Anmeldung

Wenn Sie die kennwortlose Authentifizierung in Ihrem Benutzerpool aktivieren, ändert sich die Funktionsweise einiger Benutzerabläufe.

  1. Benutzer können sich ohne Passwort registrieren und bei der Anmeldung einen kennwortlosen Faktor wählen. Sie können als Administrator auch Benutzer ohne Passwörter erstellen.

  2. Benutzer, die Sie mit einer CSV-Datei importieren, können sich sofort mit einem kennwortlosen Faktor anmelden. Sie müssen vor der Anmeldung kein Passwort festlegen.

  3. Benutzer, die kein Passwort haben, können ChangePassword API-Anfragen ohne den PreviousPassword Parameter einreichen.

Automatische Anmeldung mit OTPs

Benutzer, die sich registrieren und ihre Benutzerkonten mit OTPs per E-Mail oder SMS bestätigen, können sich automatisch mit dem kennwortlosen Faktor anmelden, der ihrer Bestätigungsnachricht entspricht. In der verwalteten Login-Benutzeroberfläche werden Benutzer, die ihre Konten bestätigen und für die OTP-Anmeldung mit der Bestätigungscode-Versandmethode berechtigt sind, automatisch zu ihrer ersten Anmeldung weitergeleitet, nachdem sie den Bestätigungscode eingegeben haben. Übergeben Sie in Ihrer maßgeschneiderten Anwendung mit einem AWS SDK die folgenden Parameter an eine OR-Operation. InitiateAuth AdminInitiateAuth

Sie können eine PREFERRED_CHALLENGE von EMAIL_OTP oder bestehenSMS_OTP, aber sie ist nicht erforderlich. Der Session Parameter dient als Nachweis der Authentifizierung und Amazon Cognito ignoriert den, AuthParameters wenn Sie einen gültigen Sitzungscode übergeben.

Der Anmeldevorgang gibt die Antwort zurück, die auf eine erfolgreiche Authentifizierung hinweist. Wenn die folgenden Bedingungen zutreffen AuthenticationResult, fallen keine weiteren Probleme an.

  • Der Session Code ist gültig und nicht abgelaufen.

  • Der Benutzer ist für die OTP-Authentifizierungsmethode berechtigt.

Activate passwordless sign-in
Konsole

Um die kennwortlose Anmeldung zu aktivieren, konfigurieren Sie Ihren Benutzerpool so, dass die primäre Anmeldung mit einem oder mehreren kennwortlosen Typen zulässig ist, und konfigurieren Sie dann Ihren App-Client, um den Ablauf zuzulassen. USER_AUTH Navigieren Sie in der Amazon Cognito-Konsole in Ihrer Benutzerpool-Konfiguration zum Sign-in Menü unter Authentifizierung. Bearbeiten Sie die Optionen für die wahlbasierte Anmeldung und wählen Sie Einmalkennwort für E-Mail-Nachricht oder Einmalkennwort für SMS-Nachricht. Sie können beide Optionen aktivieren. Speichern Sie Ihre Änderungen.

Navigieren Sie zum App-Client-Menü und wählen Sie einen App-Client aus oder erstellen Sie einen neuen. Wählen Sie Bearbeiten und wählen Sie bei der Anmeldung einen Authentifizierungstyp aus: ALLOW_USER_AUTH.

API/SDK

Konfigurieren Sie die Konfiguration in der Benutzerpool-API SignInPolicy mit den entsprechenden passwortlosen Optionen in einer OR-Anfrage. CreateUserPool UpdateUserPool

"SignInPolicy": { "AllowedFirstAuthFactors": [ "EMAIL_OTP", "SMS_OTP" ] }

Konfigurieren Sie Ihren App-Client ExplicitAuthFlows mit der erforderlichen Option in einer CreateUserPoolClient UpdateUserPoolClient ODER-Anfrage.

"ExplicitAuthFlows": [ "ALLOW_USER_AUTH" ]
Sign in with passwordless

Für die passwortlose Anmeldung gibt es keine clientbasierte Anmeldung AuthFlow, die Sie in und angeben können. InitiateAuth AdminInitiateAuth Die OTP-Authentifizierung ist nur in der Option „Auswahl unter“ verfügbar. AuthFlow Hier können Sie eine bevorzugte Anmeldeoption anfordern oder die passwortlose Option eines Benutzers auswählen. USER_AUTH AvailableChallenges Um einen Benutzer bei einer Anwendung anzumelden, konfigurieren Sie den Text Ihrer Anfrage oder Anfrage wie folgt. InitiateAuth AdminInitiateAuth Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

In diesem Beispiel wissen wir nicht, auf welche Weise sich der Benutzer anmelden möchte. Wenn wir einen PREFERRED_CHALLENGE Parameter hinzufügen und die bevorzugte Herausforderung für den Benutzer verfügbar ist, reagiert Amazon Cognito mit dieser Herausforderung.

{ "AuthFlow": "USER_AUTH", "AuthParameters": { "USERNAME" : "testuser" }, "ClientId": "1example23456789" }

AuthParametersIn diesem Beispiel können Sie stattdessen "PREFERRED_CHALLENGE": "EMAIL_OTP" oder "PREFERRED_CHALLENGE": "SMS_OTP" zu hinzufügen. Wenn der Benutzer für diese bevorzugte Methode in Frage kommt, sendet Ihr Benutzerpool sofort einen Code an die E-Mail-Adresse oder Telefonnummer des Benutzers und gibt "ChallengeName": "EMAIL_OTP" oder zurück"ChallengeName": "SMS_OTP".

Wenn Sie keine bevorzugte Herausforderung angeben, reagiert Amazon Cognito mit einem AvailableChallenges Parameter.

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

Dieser Benutzer hat Anspruch auf eine kennwortlose Anmeldung mit E-Mail-Nachricht (OTP), SMS-Nachricht (OTP) und Benutzername/Passwort. Ihre Anwendung kann den Benutzer zu seiner Auswahl auffordern oder eine Auswahl auf der Grundlage interner Logik treffen. Anschließend wird mit einer RespondToAuthChallenge AdminRespondToAuthChallenge OR-Anfrage fortgefahren, die die Herausforderung auswählt. Angenommen, der Benutzer möchte die kennwortlose Authentifizierung mit einer E-Mail-Nachricht (OTP) abschließen.

{ "ChallengeName": "SELECT_CHALLENGE", "ChallengeResponses": { "USERNAME" : "testuser", "ANSWER" : "EMAIL_OTP" }, "ClientId": "1example23456789", "Session": "[Session ID from the previous response]" }

Amazon Cognito reagiert mit einer EMAIL_OTP Aufforderung und sendet einen Code an die verifizierte E-Mail-Adresse Ihres Benutzers. Ihre Anwendung muss dann erneut auf diese Herausforderung antworten.

Dies wäre auch die nächste Antwort auf eine Herausforderung, wenn Sie dies EMAIL_OTP als anfordern würdenPREFERRED_CHALLENGE.

{ "ChallengeName": "EMAIL_OTP", "ChallengeResponses": { "USERNAME" : "testuser", "EMAIL_OTP_CODE" : "123456" }, "ClientId": "1example23456789", "Session": "[Session ID from the previous response]" }

Passwortlose Anmeldung mit Hauptschlüsseln WebAuthn

Kennwörter sind sicher und stellen für die Benutzer einen relativ geringen Aufwand dar. Bei der Hauptschlüsselanmeldung werden Authentifikatoren verwendet, d. h. externe Geräte, mit denen sich Benutzer authentifizieren können. Reguläre Passwörter setzen Benutzer Sicherheitslücken wie Phishing, Erraten von Passwörtern und Diebstahl von Zugangsdaten aus. Mithilfe von Kennwörtern kann Ihre Anwendung von fortschrittlichen Sicherheitsmaßnahmen auf Mobiltelefonen und anderen Geräten profitieren, die an Informationssysteme angeschlossen oder in diese integriert sind. Ein üblicher Arbeitsablauf bei der Anmeldung mit Hauptschlüssel beginnt mit einem Anruf auf Ihrem Gerät, der Ihren Passwort- oder Anmeldeinformationsmanager aufruft, z. B. den iOS-Schlüsselbund oder den Google Chrome-Passwortmanager. Der Anmeldeinformationsmanager auf dem Gerät fordert sie auf, einen Hauptschlüssel auszuwählen und ihn mit einem vorhandenen Mechanismus für Anmeldeinformationen oder zum Entsperren des Geräts zu autorisieren. Moderne Telefone verfügen über Gesichtsscanner, Fingerabdruckscanner, Entsperrmuster und andere Mechanismen, von denen einige gleichzeitig die Prinzipien einer starken Authentifizierung erfüllen, die Sie wissen und die Sie haben. Bei der Authentifizierung mit biometrischen Daten stellen Hauptschlüssel etwas dar, das Sie sind.

Möglicherweise möchten Sie Passwörter durch den Fingerabdruck, das Gesicht oder die Authentifizierung mit Sicherheitsschlüssel ersetzen. Dies ist ein Hauptschlüssel oder eine Authentifizierung. WebAuthn Es ist üblich, dass Anwendungsentwickler Benutzern gestatten, ein biometrisches Gerät zu registrieren, nachdem sie sich zum ersten Mal mit einem Passwort angemeldet haben. Mit Amazon Cognito-Benutzerpools kann Ihre Anwendung diese Anmeldeoption für Benutzer konfigurieren. Die Passkey-Authentifizierung kann die Anforderungen der Multifaktor-Authentifizierung (MFA) erfüllen, wenn Ihr Benutzerpool auf Folgendes eingestellt ist. FactorConfiguration MULTI_FACTOR_WITH_USER_VERIFICATION In dieser Konfiguration gilt die Hauptschlüsselauthentifizierung mit Benutzerüberprüfung als mehrstufige Authentifizierung.

One-time Die Passwort-Authentifizierungsabläufe (OTP) sind nicht mit der erforderlichen Mehrfaktorauthentifizierung (MFA) in Ihrem Benutzerpool kompatibel. Die Hauptschlüsselauthentifizierung mit Benutzerüberprüfung kann die MFA-Anforderungen erfüllen, wenn Sie diese Option festlegen. FactorConfiguration MULTI_FACTOR_WITH_USER_VERIFICATION Wenn MFA in Ihrem Benutzerpool optional ist, können sich Benutzer, die MFA aktiviert haben, nicht mit einem OTP-First-Faktor anmelden. Benutzer, die in einem MFA-optional Benutzerpool keine MFA-Präferenz haben, können sich mit kennwortlosen Faktoren anmelden. Weitere Informationen finden Sie unter Wissenswertes über den Benutzerpool MFA.

Was sind Kennwörter?

Kennwörter vereinfachen die Benutzererfahrung, da Sie sich keine komplexen Passwörter merken oder OTPs eingeben müssen. Passwörter basieren auf WebAuthn den CTAP2-Standards, die vom World Wide Web Consortium (W3C) und der FIDO (Fast Identity Online) Alliance ausgearbeitet wurden. Browser und Plattformen implementieren diese Standards und bieten APIs für Web- oder Mobilanwendungen, um einen Hauptschlüsselregistrierungs- oder Authentifizierungsprozess zu starten, sowie eine Benutzeroberfläche, über die Benutzer einen Hauptschlüsselauthentifikator auswählen und mit ihm interagieren können.

Wenn ein Benutzer einen Authenticator auf einer Website oder einer App registriert, erstellt der Authenticator ein öffentlich-privates Schlüsselpaar. WebAuthn Browser und Plattformen senden den öffentlichen Schlüssel an das Anwendungs-Backend der Website oder App. Der Authenticator speichert den privaten Schlüssel, die Schlüssel-IDs und die Metadaten über den Benutzer und die Anwendung. Wenn sich der Benutzer in der registrierten Anwendung mit seinem registrierten Authentifikator authentifizieren möchte, generiert die Anwendung eine zufällige Herausforderung. Die Antwort auf diese Herausforderung ist die digitale Signatur der Herausforderung, die mit dem privaten Schlüssel des Authentifikators für diese Anwendung und diesen Benutzer sowie den entsprechenden Metadaten generiert wird. Der Browser oder die Anwendungsplattform empfängt die digitale Signatur und leitet sie an das Anwendungs-Backend weiter. Die Anwendung validiert dann die Signatur mit dem gespeicherten öffentlichen Schlüssel.

Anmerkung

Ihre Anwendung erhält keine Authentifizierungsgeheimnisse, die Benutzer ihrem Authentifikator zur Verfügung stellen, und sie erhält auch keine Informationen über den privaten Schlüssel.

Im Folgenden finden Sie einige Beispiele und Funktionen von Authentifikatoren, die derzeit auf dem Markt sind. Ein Authentifikator könnte eine oder alle dieser Kategorien erfüllen.

  • Einige Authentifikatoren führen eine Benutzerüberprüfung anhand von Faktoren wie einer PIN, einer biometrischen Eingabe mit einem Gesicht oder einem Fingerabdruck oder einem Passcode durch, bevor sie den Zugriff gewähren, um sicherzustellen, dass nur der legitime Benutzer Aktionen autorisieren kann. Andere Authentifikatoren haben keine Funktionen zur Benutzerverifizierung, und einige können die Benutzerverifizierung überspringen, wenn eine Anwendung sie nicht erfordert.

  • Einige Authentifikatoren, zum Beispiel YubiKey Hardware-Token, sind portabel. Sie kommunizieren mit Geräten über USB-, Bluetooth- oder NFC-Verbindungen. Einige Authentifikatoren sind lokal und an eine Plattform gebunden, z. B. Windows Hello auf einem PC oder Face ID auf einem iPhone. Ein gerätegebundener Authentifikator kann vom Benutzer mitgenommen werden, wenn er klein genug ist, wie z. B. ein Mobilgerät. Manchmal können Benutzer ihren Hardware-Authentifikator drahtlos mit vielen verschiedenen Plattformen verbinden. Beispielsweise können Benutzer in Desktop-Browsern ihr Smartphone als Passkey-Authentifikator verwenden, wenn sie einen QR-Code scannen.

  • Einige plattformgebundene Hauptschlüssel werden mit der Cloud synchronisiert, sodass sie von mehreren Standorten aus verwendet werden können. Beispielsweise synchronisieren Face ID-Passkeys auf iPhones Passkey-Metadaten mit den Apple-Konten der Nutzer in ihrem iCloud-Schlüsselbund. Diese Hauptschlüssel ermöglichen eine nahtlose Authentifizierung auf allen Apple-Geräten, anstatt dass Benutzer jedes Gerät einzeln registrieren müssen. Software-based Authentifikator-Apps wie 1Password, Dashlane und Bitwarden synchronisieren Passwörter auf allen Plattformen, auf denen der Benutzer die App installiert hat.

In der WebAuthn Terminologie handelt es sich bei Websites und Apps um vertrauenswürdige Parteien. Jedem Hauptschlüssel ist eine bestimmte ID der vertrauenden Partei zugeordnet. Dabei handelt es sich um eine einheitliche Kennung, die die Websites oder Apps darstellt, die die Hauptschlüsselauthentifizierung akzeptieren. Entwickler müssen ihre Vertrauensperson-ID sorgfältig auswählen, um den richtigen Authentifizierungsumfang zu erhalten. Eine typische ID der vertrauenden Partei ist der Stammdomänenname eines Webservers. Ein Hauptschlüssel mit dieser ID-Spezifikation der vertrauenden Partei kann sich für diese Domain und Subdomänen authentifizieren. Browser und Plattformen verweigern die Passkey-Authentifizierung, wenn die URL der Website, auf die ein Benutzer zugreifen möchte, nicht mit der ID der vertrauenden Partei übereinstimmt. Ähnlich kann für mobile Apps ein Hauptschlüssel nur verwendet werden, wenn der App-Pfad in den .well-known Zuordnungsdateien enthalten ist, die die Anwendung unter dem Pfad zur Verfügung stellt, der durch die ID der vertrauenden Partei angegeben wird.

Hauptschlüssel sind auffindbar. Sie können von einem Browser oder einer Plattform automatisch erkannt und verwendet werden, ohne dass der Benutzer einen Benutzernamen eingeben muss. Wenn ein Benutzer eine Website oder App besucht, die die Hauptschlüsselauthentifizierung unterstützt, kann er aus einer Liste von Hauptschlüsseln auswählen, die der Browser oder die Plattform bereits kennt, oder er kann einen QR-Code scannen.

Wie implementiert Amazon Cognito die Passkey-Authentifizierung?

Passkeys sind eine Opt-in-Funktion, die in allen Funktionsplänen außer Lite verfügbar ist. Sie ist nur im Rahmen der wahlbasierten Authentifizierung verfügbar. Bei der verwalteten Anmeldung verarbeitet Amazon Cognito die Logik der Hauptschlüsselauthentifizierung. Sie können auch die Amazon Cognito-Benutzerpool-API in AWS SDKs verwenden, um die Passkey-Authentifizierung in Ihrem Anwendungs-Backend durchzuführen.

Amazon Cognito erkennt Hauptschlüssel, die mit einem der beiden asymmetrischen kryptografischen Algorithmen ES256 (-7) und RS256 (-257) erstellt wurden. Die meisten Authentifikatoren unterstützen beide Algorithmen. Standardmäßig können Benutzer jede Art von Authentifikatoren einrichten, z. B. Hardware-Token, mobile Smartphones und Software-Authentifikator-Apps. Amazon Cognito unterstützt derzeit nicht die Durchsetzung von Bescheinigungen.

In Ihrem Benutzerpool können Sie die Benutzerverifizierung so konfigurieren, dass sie bevorzugt oder erforderlich ist. Diese Einstellung ist in API-Anfragen, die keinen Wert angeben, standardmäßig auf „bevorzugt“ eingestellt, und in der Amazon Cognito-Konsole ist standardmäßig „bevorzugt“ ausgewählt. Wenn Sie die Benutzerüberprüfung auf „bevorzugt“ setzen, können Benutzer Authentifikatoren einrichten, die nicht über die Funktion zur Benutzerüberprüfung verfügen. Registrierungs- und Authentifizierungsvorgänge können ohne Benutzerverifizierung erfolgreich sein. Um die Benutzerverifizierung bei der Hauptschlüsselregistrierung und -authentifizierung vorzuschreiben, ändern Sie diese Einstellung in „Erforderlich“.

Die ID der vertrauenden Partei (RP), die Sie in Ihrer Hauptschlüsselkonfiguration festgelegt haben, ist eine wichtige Entscheidung. Wenn Sie nichts anderes angeben und Ihre Domain-Branding-Version die verwaltete Anmeldung ist, erwartet Ihr Benutzerpool standardmäßig den Namen Ihrer benutzerdefinierten Domain als RP-ID. Wenn Sie keine benutzerdefinierte Domain haben und nichts anderes angeben, verwendet Ihr Benutzerpool standardmäßig eine RP-ID Ihrer Präfix-Domain. Sie können Ihre RP-ID auch so konfigurieren, dass es sich um einen beliebigen Domainnamen handelt, der nicht in der öffentlichen Suffixliste (PSL) enthalten ist. Ihr RP-ID-Eintrag gilt für die Passkey-Registrierung und -Authentifizierung bei der verwalteten Anmeldung und bei der SDK-Authentifizierung. Passkey funktioniert nur in mobilen Anwendungen, in denen Amazon Cognito eine .well-known Zuordnungsdatei mit Ihrer RP-ID als Domain finden kann. Es hat sich bewährt, den Wert Ihrer Vertrauenspersonen-ID zu ermitteln und festzulegen, bevor Ihre Website oder App öffentlich verfügbar ist. Wenn Sie Ihre RP-ID ändern, müssen sich Ihre Benutzer erneut mit der neuen RP-ID registrieren.

Jeder Benutzer kann bis zu 20 Kennwörter registrieren. Sie können einen Hauptschlüssel erst registrieren, nachdem sie sich mindestens einmal bei Ihrem Benutzerpool angemeldet haben. Durch die verwaltete Anmeldung entfällt ein erheblicher Aufwand bei der Registrierung von Passkeys. Wenn Sie die Hauptschlüsselauthentifizierung für einen Benutzerpool und einen App-Client aktivieren, erinnert Ihr Benutzerpool mit einer verwalteten Anmeldedomäne die Endbenutzer daran, einen Hauptschlüssel zu registrieren, nachdem sie sich für ein neues Benutzerkonto angemeldet haben. Sie können die Browser der Benutzer auch jederzeit aufrufen, um sie auf eine verwaltete Anmeldeseite für die Hauptschlüsselregistrierung weiterzuleiten. Benutzer müssen einen Benutzernamen angeben, bevor Amazon Cognito die Hauptschlüsselauthentifizierung initiieren kann. Die verwaltete Anmeldung erledigt dies automatisch. Auf der Anmeldeseite werden Sie zur Eingabe eines Benutzernamens aufgefordert. Es wird überprüft, ob der Benutzer mindestens einen Hauptschlüssel registriert hat, und fordert dann zur Anmeldung mit dem Hauptschlüssel auf. Ebenso müssen SDK-based Anwendungen nach einem Benutzernamen fragen und diesen in der Authentifizierungsanfrage angeben.

Wenn Sie die Benutzerpool-Authentifizierung mit Hauptschlüsseln einrichten und eine benutzerdefinierte Domäne und eine Präfixdomäne haben, wird als RP-ID standardmäßig der vollqualifizierte Domänenname (FQDN) Ihrer benutzerdefinierten Domäne verwendet. Um in der Amazon Cognito-Konsole eine Präfixdomain als RP-ID festzulegen, löschen Sie Ihre benutzerdefinierte Domain oder geben Sie den FQDN der Präfixdomain als Domain ein. Third-party

Activate passkey sign-in
Konsole

Um die Anmeldung mit Hauptschlüsseln zu aktivieren, konfigurieren Sie Ihren Benutzerpool so, dass er die primäre Anmeldung mit einem oder mehreren kennwortlosen Typen zulässt, und konfigurieren Sie dann Ihren App-Client, um den Ablauf zuzulassen. USER_AUTH Navigieren Sie in der Amazon Cognito-Konsole in Ihrer Sign-in Benutzerpool-Konfiguration zum Menü unter Authentifizierung. Bearbeiten Sie die Optionen für die wahlbasierte Anmeldung und fügen Sie Passkey zur Liste der verfügbaren Optionen hinzu.

Navigieren Sie zum Menü „Authentifizierungsmethoden“ und bearbeiten Sie den Hauptschlüssel.

  • Bei der Benutzerüberprüfung wird festgelegt, ob Ihr Benutzerpool Hauptschlüsselgeräte benötigt, die zusätzlich überprüfen, ob der aktuelle Benutzer für einen Hauptschlüssel autorisiert ist. Um Benutzer zu ermutigen, ein Gerät mit Benutzerüberprüfung zu konfigurieren, dies aber nicht erforderlich ist, wählen Sie Bevorzugt aus. Um nur Geräte mit Benutzerverifizierung zu unterstützen, wählen Sie Erforderlich aus. Weitere Informationen finden Sie unter Benutzerverifizierung auf w3.org.

  • Die Domain für die Vertrauenspersonen-ID ist die Kennung, die Ihre Anwendung bei Anfragen der Benutzer zur Registrierung des Hauptschlüssels weitergibt. Sie legt das Ziel der Vertrauensbeziehung mit dem Herausgeber der Hauptschlüssel der Benutzer fest. Ihre Vertrauenspersonen-ID kann wie folgt lauten: die Domain Ihres Benutzerpools, wenn

    Cognito-Domäne

    Die Amazon Cognito-Präfix-Domain Ihres Benutzerpools.

    Benutzerdefinierte Domäne

    Die benutzerdefinierte Domäne Ihres Benutzerpools.

    Third-party Domäne

    Die Domain für Anwendungen, die die verwalteten Anmeldeseiten der Benutzerpools nicht verwenden. Diese Einstellung ist in der Regel Benutzerpools zugeordnet, die keine Domäne haben und die Authentifizierung mit einem AWS SDK und der Benutzerpool-API im Backend durchführen.

Navigieren Sie zum App-Client-Menü und wählen Sie einen App-Client aus oder erstellen Sie einen neuen. Wählen Sie Bearbeiten aus und wählen Sie unter Authentifizierungsabläufe die Option Wählen Sie bei der Anmeldung einen Authentifizierungstyp aus: ALLOW_USER_AUTH.

API/SDK

Konfigurieren Sie in der Benutzerpool-API die Konfiguration SignInPolicy mit den entsprechenden Hauptschlüsseloptionen in einer OR-Anfrage. CreateUserPool UpdateUserPool Die WEB_AUTHN Option für die Hauptschlüsselauthentifizierung muss von mindestens einer weiteren Option begleitet werden. Für die Passkey-Registrierung ist eine bestehende Authentifizierungssitzung erforderlich.

"SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "WEB_AUTHN" ] }

Konfigurieren Sie Ihre Präferenz für die Benutzerüberprüfung und die RP-ID im WebAuthnConfiguration Parameter einer SetUserPoolMfaConfig Anfrage. DasRelyingPartyId, das beabsichtigte Ziel für die Ergebnisse der Hauptschlüsselauthentifizierung, kann Ihr Benutzerpool-Präfix, Ihre benutzerdefinierte Domäne oder eine Domäne Ihrer Wahl sein.

"WebAuthnConfiguration": { "RelyingPartyId": "example.auth.us-east-1.amazoncognito.com", "UserVerification": "preferred", "FactorConfiguration": "SINGLE_FACTOR" }

Konfigurieren Sie Ihren App-Client ExplicitAuthFlows mit der erforderlichen Option in einer CreateUserPoolClient UpdateUserPoolClient ODER-Anfrage.

"ExplicitAuthFlows": [ "ALLOW_USER_AUTH" ]
Register a passkey (managed login)

Die verwaltete Anmeldung übernimmt die Benutzerregistrierung von Kennwörtern. Wenn die Hauptschlüsselauthentifizierung in Ihrem Benutzerpool aktiv ist, fordert Amazon Cognito die Benutzer auf, einen Hauptschlüssel einzurichten, wenn sie sich für ein neues Benutzerkonto registrieren.

Amazon Cognito fordert Benutzer nicht auf, einen Hauptschlüssel einzurichten, wenn sie sich bereits angemeldet und keinen Hauptschlüssel eingerichtet haben oder wenn Sie ihr Konto als Administrator erstellt haben. Benutzer in diesem Status müssen sich mit einem anderen Faktor wie einem Passwort oder einem kennwortlosen OTP anmelden, bevor sie einen Hauptschlüssel registrieren können.

Um einen Hauptschlüssel zu registrieren
  1. Leite den Benutzer auf deine Anmeldeseite weiter.

    https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https%3A%2F%2Fwww.example.com
  2. Verarbeiten Sie das Authentifizierungsergebnis des Benutzers. In diesem Beispiel leitet Amazon Cognito sie www.example.com mit einem Autorisierungscode weiter, den Ihre Anwendung gegen Token eintauscht.

  3. Leiten Sie den Benutzer auf Ihre Registrierungs-Passkey-Seite weiter. Der Benutzer erhält ein Browser-Cookie, das seine angemeldete Sitzung beibehält. Die Passkey-URL benötigt und Parameter. client_id redirect_uri Amazon Cognito erlaubt nur authentifizierten Benutzern den Zugriff auf diese Seite. Melden Sie Ihren Benutzer mit einem Passwort, E-Mail-OTP oder SMS-OTP an und rufen Sie dann eine URL auf, die dem folgenden Muster entspricht.

    Sie können dieser Anfrage auch andere Autorisieren des Endpunkts Parameter hinzufügen, z. B. und. response_type scope

    https://auth.example.com/passkeys/add?client_id=1example23456789&redirect_uri=https%3A%2F%2Fwww.example.com
Register a passkey (SDK)

Sie registrieren Passkey-Anmeldeinformationen mit Metadaten in einem PublicKeyCreationOptions Objekt. Sie können dieses Objekt mit den Anmeldeinformationen eines angemeldeten Benutzers generieren und ihn in einer API-Anfrage an seinen Hauptschlüsselaussteller senden. Der Aussteller gibt ein RegistrationResponse JSON-Objekt zurück, das die Registrierung des Hauptschlüssels bestätigt.

Um den Prozess der Hauptschlüsselregistrierung zu starten, melden Sie einen Benutzer mit einer vorhandenen Anmeldeoption an. Autorisieren Sie die Token-autorisierte StartWebAuthnRegistration API-Anfrage mit dem Zugriffstoken des aktuellen Benutzers. Das Folgende ist der Hauptteil einer Beispielanfrage. GetWebAuthnRegistrationOptions

{ "AccessToken": "eyJra456defEXAMPLE" }

Die Antwort aus Ihrem Benutzerpool enthält das PublicKeyCreationOptions Objekt. Präsentieren Sie dieses Objekt in einer API-Anfrage an den Aussteller des Benutzers. Es enthält Informationen wie den öffentlichen Schlüssel und die ID der vertrauenden Partei. Der Emittent wird mit einem RegistrationResponseJSON Objekt antworten.

Präsentieren Sie die Registrierungsantwort in einer CompleteWebAuthnRegistration API-Anfrage, die wiederum mit dem Zugriffstoken des Benutzers autorisiert ist. Wenn Ihr Benutzerpool mit einer HTTP 200-Antwort mit leerem Text antwortet, wird der Hauptschlüssel Ihres Benutzers registriert.

Sign in with a passkey

Für die kennwortlose Anmeldung gibt es keinenAuthFlow, den Sie in und angeben können. InitiateAuth AdminInitiateAuth Stattdessen müssen Sie ein AuthFlow „Von“ deklarieren USER_AUTH und eine Anmeldeoption anfordern oder Ihre passwortlose Option aus der Antwort Ihres Benutzerpools auswählen. Um einen Benutzer bei einer Anwendung anzumelden, konfigurieren Sie den Text Ihrer AdminInitiateAuth Anfrage InitiateAuth oder wie folgt. Dieser Parametersatz ist das Minimum, das für die Anmeldung erforderlich ist. Zusätzliche Parameter sind verfügbar.

In diesem Beispiel wissen wir, dass sich der Benutzer mit einem Hauptschlüssel anmelden möchte, und fügen einen PREFERRED_CHALLENGE Parameter hinzu.

{ "AuthFlow": "USER_AUTH", "AuthParameters": { "USERNAME" : "testuser", "PREFERRED_CHALLENGE" : "WEB_AUTHN" }, "ClientId": "1example23456789" }

Amazon Cognito reagiert mit einer WEB_AUTHN-Aufgabe. Ihre Anwendung muss auf diese Herausforderung reagieren. Initiieren Sie eine Anmeldeanforderung beim Passkey-Anbieter des Benutzers. Es wird ein AuthenticationResponse JSON-Objekt zurückgegeben.

{ "ChallengeName": "WEB_AUTHN", "ChallengeResponses": { "USERNAME" : "testuser", "CREDENTIAL" : "{AuthenticationResponseJSON}" }, "ClientId": "1example23456789", "Session": "[Session ID from the previous response]" }

MFA nach der Anmeldung

Sie können festlegen, dass Benutzer, die die Anmeldung mit einer Kombination aus Benutzername und Passwort abschließen, in einer E-Mail-Nachricht, einer SMS-Nachricht oder einer Anwendung zur Codegenerierung zur zusätzlichen Überprüfung mit einem Einmalkennwort aufgefordert werden. MFA unterscheidet sich von der kennwortlosen Anmeldung mit Einmalkennwörtern. Hauptschlüssel mit Benutzerüberprüfung können jedoch in erster Linie die MFA-Anforderungen erfüllen, wenn Sie sie wie in Ihrem Benutzerpool konfigurieren. FactorConfiguration MULTI_FACTOR_WITH_USER_VERIFICATION WebAuthnConfiguration Hauptschlüssel können nicht als zweiter Faktor für die Kennwortanmeldung verwendet werden. Bei kennwortbasierten Abläufen ist MFA in Benutzerpools ein Challenge-Response-Modell, bei dem ein Benutzer zunächst nachweist, dass er das Passwort kennt, und dann nachweist, dass er Zugriff auf sein registriertes Second-Factor-Gerät hat.

Ressourcen für die Implementierung

Tokens aktualisieren

Wenn Sie möchten, dass Benutzer angemeldet bleiben, ohne ihre Anmeldeinformationen erneut eingeben zu müssen, sind Aktualisierungstoken das Tool, das Ihre Anwendung benötigt, um die Sitzung eines Benutzers aufrechtzuerhalten. Anwendungen können Ihrem Benutzerpool Aktualisierungstoken präsentieren und diese gegen neue ID- und Zugriffstoken eintauschen. Mit der Token-Aktualisierung können Sie sicherstellen, dass ein angemeldeter Benutzer weiterhin aktiv ist, aktualisierte Attributinformationen abrufen und Zugriffsberechtigungen ohne Benutzereingriff aktualisieren.

Ressourcen für die Implementierung

Benutzerdefinierte Authentifizierung

Möglicherweise möchten Sie eine Authentifizierungsmethode für Ihre Benutzer konfigurieren, die hier nicht aufgeführt ist. Sie können dies mit einer benutzerdefinierten Authentifizierung mit Lambda-Triggern tun. In einer Abfolge von Lambda-Funktionen gibt Amazon Cognito eine Herausforderung aus, stellt eine Frage, die Benutzer beantworten müssen, überprüft die Antwort auf Richtigkeit und bestimmt dann, ob eine weitere Aufforderung ausgegeben werden sollte. Die Fragen und Antworten können Sicherheitsfragen, Anfragen an einen CAPTCHA-Dienst, Anfragen an eine externe MFA-Service-API oder alle diese nacheinander beinhalten.

Benutzerdefinierter Authentifizierungsablauf

Amazon Cognito-Benutzerpools ermöglichen auch die Verwendung benutzerdefinierter Authentifizierungsabläufe, die Ihnen bei der Erstellung eines challenge/response basierten Authentifizierungsmodells mithilfe von AWS Lambda Triggern helfen können.

Der benutzerdefinierte Authentifizierungsfluss ermöglicht kundenspezifische Aufforderungs- und Antwortzyklen, um unterschiedliche Anforderungen zu erfüllen. Der Ablauf beginnt mit dem Aufruf der InitiateAuth-API-Operation, die den zu verwendenden Authentifizierungstyp angibt und die anfänglichen Authentifizierungsparameter bereitstellt. Amazon Cognito antwortet auf den InitiateAuth-Aufruf mit einer der folgenden Arten von Informationen:

  • Mit einer Aufforderung für den Benutzer sowie einer Sitzung und Parametern.

  • Mit einem Fehler, wenn der Benutzer nicht authentifiziert werden konnte

  • Mit einem ID-, Zugriffs- und Aktualisierungstoken, wenn die angegebenen Parameter im InitiateAuth-Aufruf ausreichen, um den Benutzer anzumelden. (Normalerweise muss der Benutzer oder die App zuerst eine Herausforderung beantworten, aber Ihr benutzerdefinierter Code muss dies bestimmen.)

Wenn Amazon Cognito auf den InitiateAuth-Aufruf mit einer Aufforderung antwortet, sammelt die App weitere Eingaben und ruft die RespondToAuthChallenge-Operation auf. Dieser Aufruf liefert die Antworten auf die Aufforderungen und gibt sie an die Sitzung zurück. Amazon Cognito reagiert auf den RespondToAuthChallenge-Aufruf ähnlich wie auf den InitiateAuth-Aufruf. Wenn sich der Benutzer angemeldet hat, stellt Amazon Cognito Token bereit. Wenn der Benutzer hingegen nicht angemeldet ist, zeigt Amazon Cognito eine weitere Aufforderung oder einen Fehler an. Wenn Amazon Cognito eine weitere Aufforderung zurückgibt, wiederholt sich die Sequenz und die App ruft RespondToAuthChallenge auf, bis sich der Benutzer erfolgreich angemeldet hat oder ein Fehler angezeigt wird. Weitere Details finden Sie in der API-Dokumentation für die API-Operationen InitiateAuth und RespondToAuthChallenge.

Benutzerdefinierter Authentifizierungsablauf und Aufforderungen

Eine App kann einen benutzerdefinierten Authentifizierungsfluss durch Aufrufen von InitiateAuth mit CUSTOM_AUTH als Authflow initiieren. Bei einem benutzerdefinierten Authentifizierungsablauf steuern drei Lambda-Auslöser die Aufforderungen und die Verifizierung der Antworten.

  • Der DefineAuthChallenge-Lambda-Auslöser verwendet ein Sitzungs-Array mit früheren Aufforderungen und Antworten als Eingabe. Anschließend generiert er den nächsten Aufforderungsnamen und boolesche Werte, die angeben, ob der Benutzer authentifiziert ist und ihm Token gewährt werden können. Dieser Lambda-Auslöser ist ein Zustandsautomat, der den Weg des Benutzers durch die Aufforderungen steuert.

  • Der CreateAuthChallenge-Lambda-Auslöser verwendet einen Aufforderungsnamen als Eingabe und generiert die Aufforderung sowie Parameter zur Bewertung der Antwort. Wenn DefineAuthChallenge CUSTOM_CHALLENGE als nächste Aufforderung zurückgibt, ruft der Authentifizierungsablauf CreateAuthChallenge an. Der CreateAuthChallenge-Lambda-Trigger übergibt den nächsten Aufforderungstyp im Metadatenparameter der Aufforderung.

  • Die VerifyAuthChallengeResponse-Lambda-Funktion bewertet die Antwort und gibt einen booleschen Wert zurück, der angibt, ob die Antwort gültig war.

Ein benutzerdefinierter Authentifizierungsablauf kann auch eine Kombination aus integrierten Aufforderungen, z. B. SRP-Passwortverifizierung und MFA via SMS verwenden. Er kann auch benutzerdefinierte Aufforderungen wie CAPTCHA oder geheime Fragen verwenden.

Verwenden der SRP-Passwortverifizierung im benutzerdefinierten Authentifizierungsablauf

Wenn Sie SRP in einen benutzerdefinierten Authentifizierungsablauf einbeziehen möchten, müssen Sie mit SRP beginnen.

  • Um die SRP-Passwortüberprüfung in einem benutzerdefinierten Ablauf zu initiieren, ruft die App InitiateAuth mit CUSTOM_AUTH als Authflow auf. Die Anfrage Ihrer App enthält in der AuthParameters-Karte SRP_A: (den SRP-A-Wert) und CHALLENGE_NAME: SRP_A.

  • Der CUSTOM_AUTH-Ablauf ruft den DefineAuthChallenge-Lambda-Auslöser mit einer anfänglichen Sitzung von challengeName: SRP_A und challengeResult: true auf. Ihre Lambda-Funktion antwortet mit challengeName: PASSWORD_VERIFIER, issueTokens: false und failAuthentication: false.

  • Die App muss als Nächstes RespondToAuthChallenge mit challengeName: PASSWORD_VERIFIER und die anderen Parameter aufrufen, die für SRP in der challengeResponses-Zuordnung erforderlich sind.

  • Wenn Amazon Cognito das Passwort verifiziert, wird RespondToAuthChallenge den DefineAuthChallenge-Lambda-Auslöser mit einer zweiten Sitzung von challengeName: PASSWORD_VERIFIER und challengeResult: true aufrufen. Nun kann der Lambda-Auslöser DefineAuthChallenge mit challengeName: CUSTOM_CHALLENGE reagieren, um die benutzerdefinierte Aufforderung zu starten.

  • Wenn MFA für einen Benutzer aktiviert ist und Amazon Cognito das Passwort überprüft hat, wird Ihr Benutzer aufgefordert, die Einrichtung oder Anmeldung mit MFA vorzunehmen.

Anmerkung

Die von Amazon Cognito gehostete Anmeldewebseite kann Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen nicht aktivieren.

Weitere Informationen zu den Lambda-Auslösern, einschließlich Beispielcode, finden Sie unter Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern.

Ablauf der Authentifizierung für die Benutzermigration

Ein Lambda-Auslöser für die Benutzermigration hilft bei der Migration von Benutzern aus einem Legacy-Benutzerverwaltungssystem in Ihren Benutzerpool. Wenn Sie den USER_PASSWORD_AUTH-Authentifizierungsablauf auswählen, müssen Benutzer ihre Passwörter während der Benutzermigration nicht zurücksetzen. Dieser Ablauf sendet während der Authentifizierung die Passwörter Ihrer Benutzer über eine verschlüsselte SSL-Verbindung an den Service.

Wenn Sie alle Ihre Benutzer migriert haben, wechseln Sie zu dem sichereren SRP-Ablauf. Der SRP-Ablauf sendet keine Passwörter über das Netzwerk.

Weitere Informationen zu Lambda-Auslösern finden Sie unter Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern.

Weitere Informationen über die Migration von Benutzern über einen Lambda-Auslöser finden Sie unter Importieren von Benutzern mit einem Lambda-Auslöser für die Benutzermigration.