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.
-
Möchte ich Benutzern erlauben, sich mit Anmeldeinformationen von anderen Identitätsanbietern anzumelden (IdPs)?
-
Reichen ein Benutzername und ein Passwort als Identitätsnachweis aus?
-
Könnten meine Authentifizierungsanfragen zur Authentifizierung mit Benutzername/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 erlauben, die Passworteingabe zu überspringen und ein Einmalpasswort zu erhalten, mit dem sie sich anmelden?
-
Möchte ich Benutzern erlauben, sich mit einem Fingerabdruck, einem Gesicht oder einem Hardware-Sicherheitsschlüssel anzumelden?
-
Wann möchte ich eine Multi-Faktor-Authentifizierung (MFA) verlangen, wenn überhaupt?
-
Möchte ich Benutzersitzungen beibehalten, ohne erneut nach Anmeldeinformationen zu fragen?
-
Möchte ich mein Autorisierungsmodell über die integrierten Funktionen von Amazon Cognito hinaus erweitern?
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.
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
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.
-
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.
-
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.
-
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 alsSession
Anforderungsparameter. -
Ein AuthFlowvon
USER_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.
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
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.
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.
Ressourcen für die Implementierung
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. WennDefineAuthChallenge
CUSTOM_CHALLENGE
als nächste Aufforderung zurückgibt, ruft der AuthentifizierungsablaufCreateAuthChallenge
an. 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
InitiateAuth
mitCUSTOM_AUTH
alsAuthflow
auf. 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_A
undchallengeResult: true
auf. Ihre Lambda-Funktion antwortet mitchallengeName: PASSWORD_VERIFIER
,issueTokens: false
undfailAuthentication: false
. -
Die App muss als Nächstes
RespondToAuthChallenge
mitchallengeName: PASSWORD_VERIFIER
und die anderen Parameter aufrufen, die für SRP in derchallengeResponses
-Zuordnung erforderlich sind. -
Wenn Amazon Cognito das Passwort verifiziert, wird
RespondToAuthChallenge
denDefineAuthChallenge
-Lambda-Auslöser mit einer zweiten Sitzung vonchallengeName: PASSWORD_VERIFIER
undchallengeResult: true
aufrufen. Nun kann der Lambda-AuslöserDefineAuthChallenge
mitchallengeName: 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.