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.
-
Möchte ich Benutzern erlauben, sich mit Anmeldeinformationen von anderen Identitätsanbietern (IdPs) anzumelden?
-
Reichen ein Benutzername und ein Passwort als Identitätsnachweis aus?
-
Könnten meine Authentifizierungsanfragen für die Authentifizierung mit Benutzername und Passwort abgefangen werden? Möchte ich, dass meine Anwendung Passwörter überträgt oder die Authentifizierung mithilfe von Hashes und Salts aushandelt?
-
Möchte ich Benutzern ermöglichen, die Passworteingabe zu überspringen und ein Einmalpasswort zu erhalten, mit dem sie sich anmelden können?
-
Möchte ich Benutzern erlauben, sich mit einem Fingerabdruck, einem Gesicht oder einem Hardware-Sicherheitsschlüssel anzumelden?
-
Wann möchte ich eine Multifaktor-Authentifizierung (MFA) verlangen, wenn überhaupt?
-
Möchte ich Benutzersitzungen beibehalten, ohne erneut nach Anmeldeinformationen fragen zu müssen?
-
Möchte ich mein Autorisierungsmodell über die integrierten Funktionen von Amazon Cognito hinaus erweitern?
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.
Themen
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.
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.
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.
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.
-
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.
-
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.
-
Benutzer, die kein Passwort haben, können ChangePassword API-Anfragen ohne den
PreviousPasswordParameter 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
-
Der
SessionParameter aus der ConfirmSignUp API-Antwort alsSessionAnforderungsparameter. -
Ein AuthFlow von
USER_AUTH.
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
SessionCode ist gültig und nicht abgelaufen. -
Der Benutzer ist für die OTP-Authentifizierungsmethode berechtigt.
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
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
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.
Ressourcen für die Implementierung
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. WennDefineAuthChallengeCUSTOM_CHALLENGEals nächste Aufforderung zurückgibt, ruft der AuthentifizierungsablaufCreateAuthChallengean. DerCreateAuthChallenge-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
InitiateAuthmitCUSTOM_AUTHalsAuthflowauf. Die Anfrage Ihrer App enthält in derAuthParameters-KarteSRP_A:(den SRP-A-Wert) undCHALLENGE_NAME: SRP_A. -
Der
CUSTOM_AUTH-Ablauf ruft denDefineAuthChallenge-Lambda-Auslöser mit einer anfänglichen Sitzung vonchallengeName: SRP_AundchallengeResult: trueauf. Ihre Lambda-Funktion antwortet mitchallengeName: PASSWORD_VERIFIER,issueTokens: falseundfailAuthentication: false. -
Die App muss als Nächstes
RespondToAuthChallengemitchallengeName: PASSWORD_VERIFIERund die anderen Parameter aufrufen, die für SRP in derchallengeResponses-Zuordnung erforderlich sind. -
Wenn Amazon Cognito das Passwort verifiziert, wird
RespondToAuthChallengedenDefineAuthChallenge-Lambda-Auslöser mit einer zweiten Sitzung vonchallengeName: PASSWORD_VERIFIERundchallengeResult: trueaufrufen. Nun kann der Lambda-AuslöserDefineAuthChallengemitchallengeName: CUSTOM_CHALLENGEreagieren, 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.