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 Cognito-Benutzerpools lässt sich am besten als ein Ablauf beschreiben, bei dem Benutzer eine erste Wahl treffen, Anmeldeinformationen einreichen und auf zusätzliche Herausforderungen reagieren. Wenn Sie die verwaltete Anmeldeauthentifizierung in Ihrer Anwendung implementieren, verwaltet Amazon Cognito den Ablauf dieser Eingabeaufforderungen und Herausforderungen. Wenn Sie Flows 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 Benutzereigenschaften, Sicherheitsanforderungen und Ihr Autorisierungsmodell, wie Sie Benutzern die Anmeldung gestatten möchten. Stellen Sie sich die folgenden Fragen.

Wenn Sie die Antworten auf diese Fragen haben, können Sie lernen, wie Sie die entsprechenden Funktionen aktivieren und sie in die Authentifizierungsanfragen Ihrer Anwendung implementieren.

Nachdem Sie Anmeldeabläufe für einen Benutzer eingerichtet haben, können Sie dessen aktuellen Status 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.

Melden Sie sich bei einem Drittanbieter an IdPs

Amazon Cognito Cognito-Benutzerpools dienen als Zwischenvermittler 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.

Mit der föderierten Anmeldung delegieren Sie primäre und MFA-Authentifizierungsfaktoren an den IdP des Benutzers. Amazon Cognito fügt die anderen erweiterten Flows in diesem Abschnitt einem Verbundbenutzer nicht hinzu, es sei denn, Sie verknüpfen sie mit einem lokalen Benutzer. Nicht verknüpfte Verbundbenutzer haben zwar Benutzernamen, aber es handelt sich dabei um einen Speicher zugeordneter Attributdaten, die unabhängig vom browserbasierten Flow normalerweise nicht für die Anmeldung verwendet werden.

Ressourcen für die Implementierung

Melden Sie sich mit dauerhaften Passwörtern an

In Amazon Cognito 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 bereitstellen. Benutzerpools können die Anmeldung mit Benutzername/Passwort mit öffentlichen oder IAM-authentifizierten API-Operationen 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-Webtoken (JWTs), die das Ergebnis einer erfolgreichen Authentifizierung sind.

Activate password sign-in

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

Konfigurieren Sie in der Benutzerpools-API mit der erforderlichen Option in einer Oder-Anfrage. ExplicitAuthFlows CreateUserPoolClientUpdateUserPoolClient

"ExplicitAuthFlows": [ "ALLOW_USER_PASSWORD_AUTH", "ALLOW_ADMIN_USER_PASSWORD_AUTH" ]
Choice-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 Amazon Cognito antwortet mit einem „Von“, PASSWORD wenn ChallengeName der aktuelle Benutzer für eine Benutzername-Passwort-Authentifizierung berechtigt ist. Andernfalls antwortet es mit einer Liste verfügbarer Herausforderungen. 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" }, "ClientId": "1example23456789" }

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung bei einer serverseitigen App anzumelden, konfigurieren Sie den Text Ihrer AdminInitiateAuthAnfrage wie folgt. Ihre Anwendung muss diese Anfrage mit Anmeldeinformationen signieren. AWS Amazon Cognito antwortet mit einem „Von“, PASSWORD wenn ChallengeName der aktuelle Benutzer für eine Benutzername-Passwort-Authentifizierung berechtigt ist. Andernfalls antwortet es mit einer Liste verfügbarer Herausforderungen. 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" }, "ClientId": "1example23456789" }
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" : "Example1234!" }, "ClientId": "1example23456789" }

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung bei einer serverseitigen App anzumelden, konfigurieren Sie den Text Ihrer AdminInitiateAuthAnfrage 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" : "Example1234!" }, "ClientId": "1example23456789" }

Melden Sie sich mit dauerhaften Passwörtern und sicherer Payload an

Eine weitere Form der Anmeldemethoden für Benutzername/Passwort in Benutzerpools ist das Secure Remote Password (SRP) -Protokoll. Bei dieser Option wird der Kenntnisnachweis über ein Passwort — ein Kennwort-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.

Activate SRP sign-in

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

Konfigurieren Sie in der Benutzerpools-API mit der erforderlichen Option in einer Oder-Anfrage. ExplicitAuthFlows CreateUserPoolClientUpdateUserPoolClient

"ExplicitAuthFlows": [ "ALLOW_USER_SRP_AUTH" ]
Choice-based sign-in with SRP

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung bei einer clientseitigen App anzumelden, konfigurieren Sie den Text Ihrer Anfrage wie folgt. InitiateAuth Amazon Cognito antwortet mit einem „Von“, PASSWORD_SRP wenn ChallengeName der aktuelle Benutzer für eine Benutzername-Passwort-Authentifizierung berechtigt ist. Andernfalls antwortet es mit einer Liste verfügbarer Herausforderungen. 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" }, "ClientId": "1example23456789" }

Um einen Benutzer mit Benutzername-Passwort-Authentifizierung bei einer serverseitigen App anzumelden, konfigurieren Sie den Text Ihrer AdminInitiateAuthAnfrage wie folgt. Ihre Anwendung muss diese Anfrage mit Anmeldeinformationen signieren. AWS Amazon Cognito antwortet mit einem „Von“, PASSWORD_SRP wenn ChallengeName der aktuelle Benutzer für eine Benutzername-Passwort-Authentifizierung berechtigt ist. Andernfalls antwortet es mit einer Liste verfügbarer Herausforderungen. 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" }, "ClientId": "1example23456789" }
Client-based sign-in with SRP

Die SRP-Authentifizierung wird häufiger für die clientseitige als für die serverseitige Authentifizierung verwendet. Sie können die SRP-Authentifizierung jedoch mit und verwenden. InitiateAuthAdminInitiateAuth Um einen Benutzer bei einer Anwendung anzumelden, konfigurieren Sie den Hauptteil Ihrer InitiateAuth AdminInitiateAuth OR-Anforderung 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, der mit einer geheimen zufälligen Ganzzahl a potenziert wird.

{ "AuthFlow": "USER_PASSWORD_AUTH", "AuthParameters": { "USERNAME" : "testuser", "SRP_A" : "g^a" }, "ClientId": "1example23456789" }

Amazon Cognito reagiert mit einer PASSWORD_VERIFIER-Aufgabe. Ihr Kunde muss die SRP-Berechnungen durchführen und auf die Herausforderung in einer RespondToAuthChallengeOder-Anfrage antworten. 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]" }

Integrierter Authentifizierungsablauf und Aufforderungen

Amazon Cognito enthält integrierte AuthFlow- und ChallengeName-Werte, so dass ein standardmäßiger Authentifizierungsablauf einen Benutzernamen und ein Passwort über das Secure Remote Password (SRP)-Protokoll validieren kann. AWS SDKs Sie haben in Amazon Cognito eine integrierte Unterstützung für diese Flows.

Der Flow beginnt mit dem Senden von USER_SRP_AUTH als AuthFlow an InitiateAuth. Sie können auch USERNAME- und SRP_A-Werte in AuthParameters senden. Wenn der InitiateAuth-Aufruf erfolgreich ist, enthält die Antwort PASSWORD_VERIFIER als ChallengeName und SRP_B in den Herausforderungsparametern. Die App ruft dann RespondToAuthChallenge mit dem PASSWORD_VERIFIER ChallengeName und den erforderlichen Parametern in ChallengeResponses auf. Wenn der Aufruf von RespondToAuthChallenge erfolgreich ist und sich der Benutzer anmeldet, stellt Amazon Cognito Token aus. Wenn Sie die Multi-Faktor-Authentifizierung (MFA) für den Benutzer aktiviert haben, gibt Amazon Cognito die ChallengeName von SMS_MFA aus. Die App kann den erforderlichen Code durch einen anderen Anruf an RespondToAuthChallenge ausstellen.

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 die passwortlose Anmeldung. Ihre Anwendung kann Benutzer zur Eingabe ihres Benutzernamens, ihrer E-Mail-Adresse oder Telefonnummer auffordern. Amazon Cognito generiert dann ein Einmalkennwort (OTP), einen Code, den sie bestätigen müssen. Ein erfolgreicher Code schließt die Authentifizierung ab. Dieser Authentifizierungsablauf ist nicht für die Multi-Faktor-Authentifizierung (MFA) geeignet.

Wenn ein Benutzer im Rahmen der kennwortlosen Authentifizierung einen Code, den er in einer SMS oder E-Mail-Nachricht erhalten hat, korrekt eingibt, markiert Ihr Benutzerpool zusätzlich zur Authentifizierung des Benutzers auch die nicht verifizierte E-Mail-Adresse oder das Telefonnummernattribut des Benutzers als verifiziert. Der Benutzerstatus wurde 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 passwortlose Authentifizierung in Ihrem Benutzerpool aktivieren, ändert sich dadurch die Funktionsweise einiger Benutzerabläufe.

  1. Benutzer können sich ohne Passwort registrieren und bei der Anmeldung einen passwortlosen 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 passwortlosen Faktor anmelden. Sie müssen vor der Anmeldung kein Passwort festlegen.

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

Automatische Anmeldung mit OTPs

Benutzer, die sich registrieren und ihre Benutzerkonten per E-Mail oder SMS-Nachricht bestätigen, OTPs können sich automatisch mit dem passwortlosen Faktor anmelden, der ihrer Bestätigungsnachricht entspricht. Auf der verwalteten Anmelde-Benutzeroberfläche können Benutzer, die ihre Konten bestätigen und für die OTP-Anmeldung mit der Methode zur Übermittlung des Bestätigungscodes berechtigt sind, automatisch zu ihrer ersten Anmeldung übergehen, nachdem sie den Bestätigungscode eingegeben haben. Übergeben Sie in Ihrer maßgeschneiderten Anwendung mit einem AWS SDK die folgenden Parameter an eine Oder-Operation. InitiateAuthAdminInitiateAuth

  • Der Session Parameter aus der ConfirmSignUpAPI-Antwort als Session Anforderungsparameter.

  • Ein AuthFlowvonUSER_AUTH.

Sie können eine PREFERRED_CHALLENGE von EMAIL_OTP oder bestehenSMS_OTP, dies ist jedoch nicht erforderlich. Der Session Parameter liefert einen Authentifizierungsnachweis 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 AuthenticationResult, ohne zusätzliche Herausforderungen, wenn die folgenden Bedingungen zutreffen.

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

  • Der Benutzer hat Anspruch auf die angeforderte PREFERRED_CHALLENGE Authentifizierungsmethode.

Activate passwordless sign-in
Konsole

Um die passwortlose 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 so, dass der Flow zugelassen wird. USER_AUTH Navigieren Sie in der Amazon Cognito Cognito-Konsole in Ihrer Benutzerpool-Konfiguration unter Authentifizierung zum Anmelde-Menü. Bearbeiten Sie die Optionen für die wahlbasierte Anmeldung und wählen Sie Einmalpasswort für E-Mail-Nachricht oder Einmalpasswort für SMS-Nachricht. Sie können beide Optionen aktivieren. Speichern Sie Ihre Änderungen.

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

API/SDK

Konfigurieren Sie in der Benutzerpools-API SignInPolicy mit den entsprechenden kennwortlosen Optionen in einer Oder-Anfrage. CreateUserPoolUpdateUserPool

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

Konfigurieren Sie Ihren App-Client ExplicitAuthFlows mit der erforderlichen Option in einer CreateUserPoolClientUpdateUserPoolClientOder-Anfrage.

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

Bei der passwortlosen Anmeldung gibt es keine OptionAuthFlow, die Sie in und angeben können. InitiateAuthAdminInitiateAuth Stattdessen müssen Sie ein AuthFlow of 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 Hauptteil Ihrer AdminInitiateAuth Oder-Anfrage wie InitiateAuth folgt. 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, antwortet Amazon Cognito mit dieser Herausforderung.

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

Amazon Cognito reagiert und enthält einen AvailableChallenges Parameter.

{ "AvailableChallenges": [ "EMAIL_OTP", "SMS_OTP", "PASSWORD" ], "Session": "[Session ID from the previous response]" }

Dieser Benutzer ist berechtigt, sich passwortlos mit E-Mail-Einmalpasswort, SMS-Einmalpasswort und Benutzername/Passwort anzumelden. Ihre Anwendung kann den Benutzer zur Eingabe seiner Auswahl auffordern oder eine Auswahl auf der Grundlage interner Logik treffen. Anschließend wird mit einer AdminRespondToAuthChallengeOder-Anfrage RespondToAuthChallengefortgefahren, mit der die Herausforderung ausgewählt wird. Angenommen, der Benutzer möchte die kennwortlose Authentifizierung mit einem Einmalpasswort für eine E-Mail-Nachricht abschließen.

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

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

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

Anmeldung mit Passkey

Passkeys sind sicher und bedeuten für die Benutzer einen relativ geringen Aufwand. Die Passkey-Anmeldung verwendet Authentifikatoren, 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 Anmeldeinformationen aus. Mit Passkeys kann Ihre Anwendung von fortschrittlichen Sicherheitsmaßnahmen auf Mobiltelefonen und anderen Geräten profitieren, die an Informationssysteme angeschlossen oder in diese integriert sind. Ein gängiger Anmeldeprozess mit dem 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-Passwort-Manager. Der Manager für Anmeldeinformationen auf dem Gerät fordert sie auf, einen Hauptschlüssel auszuwählen und ihn mit einem vorhandenen Mechanismus zum Entsperren von Anmeldeinformationen oder Geräten zu autorisieren. Moderne Telefone verfügen über Gesichtsscanner, Fingerabdruckscanner, Entsperrmuster und andere Mechanismen, von denen einige gleichzeitig das Prinzip der starken Authentifizierung erfüllen, das etwas, das Sie kennen, und etwas, das Sie haben, erfüllen. Im Fall der biometrischen Authentifizierung mit Passkeys stehen Kennwörter für etwas, das Sie sind.

Möglicherweise möchten Sie Passwörter durch die Authentifizierung per Fingerabdruck, Gesicht oder Sicherheitsschlüssel ersetzen. Das ist Hauptschlüssel oder 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 Cognito-Benutzerpools kann Ihre Anwendung diese Anmeldeoption für Benutzer konfigurieren. Die Passkey-Authentifizierung ist nicht für die Multi-Faktor-Authentifizierung (MFA) geeignet.

Was sind Hauptschlüssel?

Passkeys vereinfachen die Benutzererfahrung, da sie sich keine komplexen Passwörter merken oder sie eingeben müssen. OTPs Passkeys basieren auf WebAuthn CTAP2 Standards, die vom World Wide Web Consortium (W3C) und der FIDO (Fast Identity Online) Alliance entworfen wurden. Browser und Plattformen implementieren diese Standards und ermöglichen es Web- oder Mobilanwendungen, einen Prozess APIs zur Registrierung oder Authentifizierung von Passkeys zu starten, sowie eine Benutzeroberfläche, über die der Benutzer einen Passkey-Authentifikator auswählen und mit diesem interagieren kann.

Wenn ein Benutzer einen Authentifikator bei einer Website oder einer App registriert, erstellt der Authenticator ein öffentlich-privates key pair. WebAuthn Browser und Plattformen senden den öffentlichen Schlüssel an das Anwendungs-Backend der Website oder App. Der Authentifikator speichert den privaten Schlüssel, den 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 Aufforderung. Die Antwort auf diese Herausforderung ist die digitale Signatur der Aufforderung, 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 weder Authentifizierungsgeheimnisse, die Benutzer ihrem Authentifikator zur Verfügung stellen, noch Informationen über den privaten Schlüssel.

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

  • Einige Authentifikatoren führen eine Benutzerverifizierung 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. Dadurch wird sichergestellt, dass nur der legitime Benutzer Aktionen autorisieren kann. Andere Authentifikatoren verfügen nicht über Funktionen zur Benutzerverifizierung, und einige können die Benutzerverifizierung überspringen, wenn eine Anwendung sie nicht benötigt.

  • 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 mitgeführt werden, wenn er klein genug ist, wie ein Mobilgerät. Manchmal können Benutzer ihren Hardware-Authentifikator mit vielen verschiedenen Plattformen über drahtlose Kommunikation verbinden. Beispielsweise können Benutzer in Desktop-Browsern ihr Smartphone als Hauptschlüsselauthentifikator 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 die Passkey-Metadaten mit den Apple-Konten der Nutzer in deren iCloud-Schlüsselbund. Diese Hauptschlüssel ermöglichen eine nahtlose Authentifizierung auf allen Apple-Geräten, anstatt zu verlangen, dass Benutzer jedes Gerät einzeln registrieren. Softwarebasierte Authentifikator-Apps wie 1Password, Dashlane und Bitwarden synchronisieren Passkeys auf allen Plattformen, auf denen der Benutzer die App installiert hat.

In der WebAuthn Terminologie sind Websites und Apps vertrauende Parteien. Jeder Hauptschlüssel ist mit einer bestimmten ID der vertrauenden Partei verknüpft, einer einheitlichen Kennung, die die Websites oder Apps darstellt, die die Passkey-Authentifizierung akzeptieren. Entwickler müssen ihre ID der vertrauenden Partei sorgfältig auswählen, um den richtigen Authentifizierungsumfang zu gewährleisten. Eine typische ID der vertrauenden Partei ist der Stammdomänenname eines Webservers. Ein Hauptschlüssel mit dieser Spezifikation für die ID der vertrauenden Partei kann für diese Domain und Subdomänen authentifiziert werden. 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 durch die ID der vertrauenden Partei angegebenen Pfad zur Verfügung stellt.

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 dem Browser oder der Plattform bereits bekannt sind, oder er kann einen QR-Code scannen.

Wie implementiert Amazon Cognito die Passkey-Authentifizierung?

Hauptschlüssel sind eine optionale Funktion, die in allen Funktionsplänen außer Lite verfügbar ist. Sie ist nur im wahlbasierten Authentifizierungsablauf verfügbar. Bei der verwalteten Anmeldung übernimmt Amazon Cognito die Logik der Passkey-Authentifizierung. Sie können auch die Amazon Cognito-Benutzerpools-API verwenden, AWS SDKs 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 (-257) erstellt wurden. RS256 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-Authenticator-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 Cognito-Konsole ist standardmäßig „bevorzugt“ ausgewählt. Wenn Sie die Benutzerverifizierung auf bevorzugt setzen, können Benutzer Authentifikatoren einrichten, die nicht über die Funktion zur Benutzerverifizierung verfügen, und Registrierungs- und Authentifizierungsvorgänge können auch ohne Benutzerverifizierung erfolgreich sein. Um die Benutzerverifizierung bei der Registrierung und Authentifizierung mit dem Hauptschlüssel vorzuschreiben, ändern Sie diese Einstellung in „Erforderlich“.

Die ID der vertrauenden Partei (Relying Party, RP), die Sie in Ihrer Hauptschlüsselkonfiguration festgelegt haben, ist eine wichtige Entscheidung. Wenn Sie nichts anderes angeben und Ihre Domain-Branding-Version eine 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 sie ein beliebiger Domainname ist, der nicht in der öffentlichen Suffixliste (PSL) enthalten ist. Ihr RP-ID-Eintrag gilt für die Registrierung und Authentifizierung mit dem Hauptschlüssel bei der verwalteten Anmeldung und bei der SDK-Authentifizierung. Passkey funktioniert nur in mobilen Anwendungen, bei denen Amazon Cognito eine .well-known Zuordnungsdatei mit Ihrer RP-ID als Domain finden kann. Es hat sich bewährt, den Wert der ID Ihrer vertrauenden Partei 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 Hauptschlüssel 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 des Hauptschlüssels. Wenn Sie die Hauptschlüsselauthentifizierung für einen Benutzerpool und einen App-Client aktivieren, erinnert Ihr Benutzerpool mit einer verwalteten Anmeldedomäne Endbenutzer daran, einen Hauptschlüssel zu registrieren, nachdem sie sich für ein neues Benutzerkonto registriert haben. Sie können die Browser der Benutzer auch jederzeit aufrufen, um sie zur Registrierung des Hauptschlüssels auf eine verwaltete Anmeldeseite 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 ein Hauptschlüssel registriert hat, und Sie werden dann zur Anmeldung mit dem Hauptschlüssel aufgefordert. Ebenso müssen SDK-basierte Anwendungen zur Eingabe eines Benutzernamens auffordern und diesen in der Authentifizierungsanfrage angeben.

Wenn Sie die Benutzerpoolauthentifizierung mit Hauptschlüsseln einrichten und über eine benutzerdefinierte Domäne und eine Präfixdomäne verfügen, verwendet die RP-ID standardmäßig den vollqualifizierten Domänennamen (FQDN) Ihrer benutzerdefinierten Domäne. Um eine Präfix-Domain als RP-ID in der Amazon Cognito Cognito-Konsole festzulegen, löschen Sie Ihre benutzerdefinierte Domain oder geben Sie den FQDN der Präfix-Domain als Drittanbieter-Domain ein.

Activate passkey sign-in
Konsole

Um die Anmeldung mit Hauptschlüsseln 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 so, dass er den Datenfluss zulässt. USER_AUTH Navigieren Sie in der Amazon Cognito Cognito-Konsole in Ihrer Benutzerpool-Konfiguration unter Authentifizierung zum Anmelde-Menü. 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 Passkey.

  • Die Benutzerüberprüfung ist die Einstellung, 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 Benutzerverifizierung zu konfigurieren, diese aber nicht zu verlangen, 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 ID der Domäne für die vertrauende Partei ist die Kennung, die Ihre Anwendung bei der Registrierung mit dem Hauptschlüssel der Benutzer weitergibt. Sie legt das Ziel der Vertrauensbeziehung mit dem Herausgeber der Hauptschlüssel der Benutzer fest. Ihre ID der vertrauenden Partei kann wie folgt lauten: die Domain Ihres Benutzerpools, wenn

    Cognito-Domäne

    Die Amazon Cognito-Präfixdomäne Ihres Benutzerpools.

    Benutzerdefinierte Domain

    Die benutzerdefinierte Domain Ihres Benutzerpools.

    Domain eines Drittanbieters

    Die Domäne für Anwendungen, die den Benutzerpool nicht verwenden, verwaltete Anmeldeseiten. Diese Einstellung wird normalerweise Benutzerpools zugeordnet, die keine Domäne haben und die Authentifizierung mit einem AWS SDK und der Benutzerpools-API im Backend durchführen.

Navigieren Sie zum Menü App-Clients 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 Benutzerpools-API SignInPolicy mit den entsprechenden Passkey-Optionen in einer CreateUserPoolOder-Anfrage. UpdateUserPool Die WEB_AUTHN Option für die Hauptschlüsselauthentifizierung muss von mindestens einer weiteren Option begleitet werden. Für die Registrierung mit dem Passkey ist eine bestehende Authentifizierungssitzung erforderlich.

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

Konfigurieren Sie Ihre Präferenz für die Benutzerverifizierung und Ihre RP-ID im WebAuthnConfiguration Parameter einer SetUserPoolMfaConfigAnfrage. DasRelyingPartyId, das beabsichtigte Ziel der Ergebnisse der Passkey-Authentifizierung, kann Ihr Benutzerpool-Präfix oder Ihre benutzerdefinierte Domain oder eine Domain Ihrer Wahl sein.

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

Konfigurieren Sie Ihren App-Client ExplicitAuthFlows mit der erforderlichen Option in einer CreateUserPoolClientUpdateUserPoolClientOder-Anfrage.

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

Die verwaltete Anmeldung kümmert sich um die Benutzerregistrierung von Hauptschlüsseln. Wenn die Hauptschlüsselauthentifizierung in Ihrem Benutzerpool aktiv ist, fordert Amazon Cognito 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 registriert haben 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. Leiten Sie den Benutzer zu Ihrer 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 zu Ihrer Registrierungs-Passkey-Seite weiter. Der Benutzer erhält ein Browser-Cookie, das seine angemeldete Sitzung beibehält. Die Hauptschlüssel-URL verwendet 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 Hauptschlüsselanmeldeinformationen mit Metadaten in einem PublicKeyCreationOptionsObjekt. Sie können dieses Objekt mit den Anmeldeinformationen eines angemeldeten Benutzers generieren und diese in einer API-Anfrage an dessen Hauptschlüsselaussteller weitergeben. Der Aussteller gibt ein RegistrationResponseJSON-Objekt zurück, das die Registrierung des Hauptschlüssels bestätigt.

Um den Prozess der Registrierung des Hauptschlüssels zu starten, melden Sie einen Benutzer mit einer vorhandenen Anmeldeoption an. Autorisieren Sie die durch das Token autorisierte StartWebAuthnRegistrationAPI-Anfrage mit dem Zugriffstoken des aktuellen Benutzers. Im Folgenden finden Sie den Hauptteil einer Beispielanforderung. 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 Antwort auf die Registrierung in einer CompleteWebAuthnRegistrationAPI-Anfrage, die wiederum mit dem Zugriffstoken des Benutzers autorisiert wurde. Wenn Ihr Benutzerpool mit einer HTTP 200-Antwort mit einem leeren Text antwortet, ist der Hauptschlüssel Ihres Benutzers registriert.

Sign in with a passkey

Bei der passwortlosen Anmeldung gibt es keine OptionAuthFlow, die Sie in und angeben können. InitiateAuthAdminInitiateAuth Stattdessen müssen Sie ein AuthFlow of 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 Hauptteil Ihrer AdminInitiateAuth Oder-Anfrage wie InitiateAuth 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 Bewerbung muss auf diese Herausforderung reagieren. Initiieren Sie eine Anmeldeanforderung beim Passkey-Anbieter des Benutzers. Es wird ein AuthenticationResponseJSON-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 einem Benutzername-Passwort-Schema abschließen, in einer E-Mail-Nachricht, SMS-Nachricht oder einer Anwendung zur Codegenerierung zu einer zusätzlichen Bestätigung mit einem Einmalkennwort aufgefordert werden. MFA unterscheidet sich von der passwortlosen Anmeldung, einem ersten Authentifizierungsfaktor mit WebAuthn Einmalpasswörtern oder Kennwörtern, der MFA nicht beinhaltet. MFA in Benutzerpools ist 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 Benutzern die Möglichkeit geben möchten, das Kontrollkästchen „An mich erinnern“ zu aktivieren, sind Aktualisierungstoken das Tool, das Ihre Anwendung benötigt, um die Sitzung eines Benutzers beizubehalten. 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 Aufforderung aus, stellt eine Frage, die Benutzer beantworten müssen, überprüft die Antwort auf ihre Richtigkeit und bestimmt dann, ob eine weitere Aufforderung ausgegeben werden soll. Die Fragen und Antworten können Sicherheitsfragen, Anfragen an einen CAPTCHA-Dienst, Anfragen an eine externe MFA-Dienst-API oder alle diese nacheinander beinhalten.

Benutzerdefinierter Authentifizierungsablauf

Amazon-Cognito-Benutzerpools ermöglichen außerdem die Verwendung benutzerdefinierter Authentifizierungsabläufe, mit denen Sie ein auf Aufforderungen und Antworten basiertes Authentifizierungsmodell mithilfe von AWS Lambda -Auslösern erstellen 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.