So funktioniert die Authentifizierung mit Amazon Cognito - 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.

So funktioniert die Authentifizierung mit Amazon Cognito

Wenn sich Ihr Kunde bei einem Amazon Cognito-Benutzerpool anmeldet, erhält Ihre Anwendung JSON Web-Token (JWTs).

Wenn sich Ihr Kunde bei einem Identitätspool anmeldet, entweder mit einem Benutzerpool-Token oder einem anderen Anbieter, erhält Ihre Anwendung temporäre AWS Anmeldeinformationen.

Mit der Benutzerpool-Anmeldung können Sie die Authentifizierung und Autorisierung vollständig mit einem AWS SDK implementieren. Wenn Sie keine eigenen Benutzeroberflächenkomponenten (UI) erstellen möchten, können Sie eine vorgefertigte Weboberfläche (die gehostete Benutzeroberfläche) oder die Anmeldeseite für Ihren externen Identitätsanbieter (IdP) aufrufen.

Dieses Thema bietet einen Überblick über einige der Möglichkeiten, wie Ihre Anwendung mit Amazon Cognito interagieren kann, um sich mit ID-Token zu authentifizieren, mit Zugriffstoken zu autorisieren und AWS-Services mit Identitätspool-Anmeldeinformationen zuzugreifen.

APIAuthentifizierung und Autorisierung des Benutzerpools mit einem AWS SDK

AWS hat Komponenten für Amazon Cognito Cognito-Benutzerpools oder Amazon Cognito Cognito-Identitätsanbieter in einer Vielzahl von Entwickler-Frameworks entwickelt. Die darin integrierten Methoden SDKs nennen die Amazon Cognito Cognito-Benutzerpools API. Derselbe API Namespace für Benutzerpools verfügt über Operationen zur Konfiguration von Benutzerpools und zur Benutzerauthentifizierung. Eine ausführlichere Übersicht finden Sie unterVerwenden der Benutzerpools API und des Autorisierungsservers.

APIDie Authentifizierung eignet sich für das Modell, bei dem Ihre Anwendungen über vorhandene Benutzeroberflächenkomponenten verfügen und in erster Linie auf dem Benutzerpool als Benutzerverzeichnis basieren. Dieses Design fügt Amazon Cognito als Komponente innerhalb einer größeren Anwendung hinzu. Es erfordert programmatische Logik, um komplexe Herausforderungen und Reaktionen zu bewältigen.

Diese Anwendung muss keine vollständige OpenID Connect (OIDC) -Rely-Party-Implementierung implementieren. Stattdessen kann sie dekodiert und verwendet werden. JWTs Wenn Sie Zugriff auf alle Benutzerpool-Funktionen für lokale Benutzer haben möchten, erstellen Sie Ihre Authentifizierung mit Amazon Cognito SDK in Ihrer Entwicklungsumgebung.

APIDie Authentifizierung mit benutzerdefinierten OAuth Bereichen ist weniger auf die externe API Autorisierung ausgerichtet. Um einem Zugriffstoken aus der API Authentifizierung benutzerdefinierte Bereiche hinzuzufügen, ändern Sie das Token zur Laufzeit mit einem. Lambda-Auslöser für die Vorab-Generierung von Token

Das folgende Diagramm zeigt eine typische Anmeldesitzung für API die Authentifizierung.

Ein Flussdiagramm, das eine Anwendung zeigt, die einen Benutzer zur Eingabe auffordert und ihn mit einem anmeldet. AWS SDK
APIAblauf der Authentifizierung
  1. Ein Benutzer greift auf Ihre Anwendung zu.

  2. Er wählt einen Link „Anmelden“ aus.

  3. Sie geben ihren Benutzernamen und ihr Passwort ein.

  4. Die Anwendung ruft die Methode auf, die eine InitiateAuthAPIAnfrage stellt. Die Anfrage leitet die Anmeldeinformationen des Benutzers an einen Benutzerpool weiter.

  5. Der Benutzerpool validiert die Anmeldeinformationen des Benutzers und stellt fest, dass der Benutzer die Multi-Faktor-Authentifizierung aktiviert hat ()MFA.

  6. Der Benutzerpool antwortet mit einer Aufforderung, die einen Code anfordert. MFA

  7. Die Anwendung generiert eine Aufforderung, die den MFA Code vom Benutzer sammelt.

  8. Die Anwendung ruft die Methode auf, die eine RespondToAuthChallengeAPIAnfrage stellt. Die Anfrage übergibt den MFA Code des Benutzers.

  9. Der Benutzerpool validiert den MFA Code des Benutzers.

  10. Der Benutzerpool antwortet mit dem des BenutzersJWTs.

  11. Die Anwendung dekodiert, validiert und speichert oder zwischenspeichert die Daten des Benutzers. JWTs

  12. Die Anwendung zeigt die angeforderte zugriffskontrollierte Komponente an.

  13. Der Benutzer sieht sich seinen Inhalt an.

  14. Später ist das Zugriffstoken des Benutzers abgelaufen und er möchte eine zugriffskontrollierte Komponente aufrufen.

  15. Die Anwendung bestimmt, dass die Benutzersitzung bestehen bleiben soll. Sie ruft die InitiateAuthMethode erneut mit dem Aktualisierungstoken auf und ruft neue Token ab.

Varianten und Anpassung

Sie können diesen Ablauf durch zusätzliche Herausforderungen erweitern, z. B. durch Ihre eigenen benutzerdefinierten Authentifizierungsherausforderungen. Sie können den Zugriff automatisch für Benutzer einschränken, deren Passwörter kompromittiert wurden oder deren unerwartete Anmeldemerkmale auf einen böswilligen Anmeldeversuch hindeuten könnten. Dieser Ablauf sieht bei Vorgängen zum Registrieren, Aktualisieren von Benutzerattributen und Zurücksetzen von Kennwörtern sehr ähnlich aus. Die meisten dieser Datenflüsse haben doppelte öffentliche (clientseitige) und vertrauliche (serverseitige) Operationen. API

Benutzerpool-Authentifizierung mit der gehosteten Benutzeroberfläche

Die gehostete Benutzeroberfläche ist eine Website, die mit Ihrem Benutzerpool und App-Client verknüpft ist. Es kann Vorgänge zur Anmeldung, Registrierung und zum Zurücksetzen des Passworts für Ihre Benutzer ausführen. Die Implementierung einer Anwendung mit einer gehosteten UI-Komponente für die Authentifizierung kann weniger Aufwand durch Entwickler erfordern. Eine Anwendung kann UI-Komponenten für die Authentifizierung überspringen und die gehostete Benutzeroberfläche im Browser des Benutzers aufrufen.

Anwendungen erfassen Benutzer JWTs mit einem Web- oder App-Weiterleitungsstandort. Anwendungen, die die gehostete Benutzeroberfläche implementieren, können sich zur Authentifizierung mit Benutzerpools verbinden, als ob sie ein OpenID Connect (OIDC) -IdP wären.

Die gehostete UI-Authentifizierung eignet sich für das Modell, bei dem Anwendungen einen Autorisierungsserver benötigen, aber keine Funktionen wie benutzerdefinierte Authentifizierung, Integration von Identitätspools oder Self-Service für Benutzerattribute benötigen. Wenn Sie einige dieser erweiterten Optionen verwenden möchten, können Sie sie mit einer Benutzerpools-Komponente für eine SDK implementieren.

Gehostete Benutzeroberflächen und IdP-Authentifizierungsmodelle von Drittanbietern, die primär von der OIDC Implementierung abhängen, eignen sich am besten für erweiterte Autorisierungsmodelle mit OAuth 2.0-Bereichen.

Das folgende Diagramm zeigt eine typische Anmeldesitzung für die gehostete UI-Authentifizierung.

Ein Flussdiagramm, das eine Anwendung zeigt, die einen Benutzer zur Eingabe auffordert und ihn über die gehostete Benutzeroberfläche anmeldet.
Ablauf der Authentifizierung über die gehostete Benutzeroberfläche
  1. Ein Benutzer greift auf Ihre Anwendung zu.

  2. Er wählt einen Link „Anmelden“ aus.

  3. Die Anwendung leitet den Benutzer zu einer gehosteten UI-Anmeldeaufforderung weiter.

  4. Sie geben ihren Benutzernamen und ihr Passwort ein.

  5. Der Benutzerpool validiert die Anmeldeinformationen des Benutzers und stellt fest, dass der Benutzer die Multi-Faktor-Authentifizierung aktiviert hat ()MFA.

  6. Die gehostete Benutzeroberfläche fordert den Benutzer auf, einen Code einzugeben. MFA

  7. Der Benutzer gibt seinen MFA Code ein.

  8. Die gehostete Benutzeroberfläche leitet den Benutzer zur Anwendung weiter.

  9. Die Anwendung erfasst den Autorisierungscode aus dem URL Anforderungsparameter, den die gehostete Benutzeroberfläche an den Rückruf URL angehängt hat.

  10. Die Anwendung fordert Token mit dem Autorisierungscode an.

  11. Der Token-Endpunkt kehrt JWTs zur Anwendung zurück.

  12. Die Anwendung dekodiert, validiert und speichert oder zwischenspeichert die Daten des Benutzers. JWTs

  13. Die Anwendung zeigt die angeforderte zugriffskontrollierte Komponente an.

  14. Der Benutzer sieht sich seinen Inhalt an.

  15. Später ist das Zugriffstoken des Benutzers abgelaufen und er möchte eine zugriffskontrollierte Komponente aufrufen.

  16. Die Anwendung bestimmt, dass die Benutzersitzung bestehen bleiben soll. Sie fordert mit dem Aktualisierungstoken neue Token vom Token-Endpunkt an.

Varianten und Anpassung

Sie können das Erscheinungsbild der gehosteten Benutzeroberfläche CSS in jedem App-Client anpassen. Sie können App-Clients auch mit eigenen Identitätsanbietern, Bereichen, Zugriff auf Benutzerattribute und erweiterter Sicherheitskonfiguration konfigurieren.

Benutzerpool-Authentifizierung mit einem externen Identitätsanbieter

Die Anmeldung mit einem externen Identitätsanbieter (IdP) oder die Verbundauthentifizierung ist ein ähnliches Modell wie die gehostete Benutzeroberfläche. Ihre Anwendung ist eine OIDC vertrauende Partei für Ihren Benutzerpool, während Ihr Benutzerpool als Passthrough zu einem IdP dient. Der IdP kann ein Verbraucherbenutzerverzeichnis wie Facebook oder Google sein, oder es kann ein SAML 2.0- oder OIDC Unternehmensverzeichnis wie Azure sein.

Anstelle der gehosteten Benutzeroberfläche im Browser des Benutzers ruft Ihre Anwendung einen Umleitungsendpunkt auf dem Autorisierungsserver des Benutzerpools auf. Aus der Sicht des Benutzers wählt er die Anmeldeschaltfläche in Ihrer Anwendung aus. Dann fordert ihr IdP sie auf, sich anzumelden. Wie bei der gehosteten UI-Authentifizierung sammelt eine Anwendung Daten JWTs an einer Weiterleitungsstelle in der App.

Die Authentifizierung mit einem Drittanbieter-IdP passt zu einem Modell, bei dem Benutzer möglicherweise kein neues Passwort eingeben möchten, wenn sie sich für Ihre Anwendung registrieren. Eine Drittanbieter-Authentifizierung kann mit geringem Aufwand zu einer Anwendung hinzugefügt werden, die die gehostete UI-Authentifizierung implementiert hat. Tatsächlich IdPs führen die gehostete Benutzeroberfläche und der Drittanbieter zu einem konsistenten Authentifizierungsergebnis, wenn geringfügige Abweichungen in den Browsern der Benutzer aufgerufen werden.

Wie die Authentifizierung über gehostete Benutzeroberflächen eignet sich die Verbundauthentifizierung am besten für erweiterte Autorisierungsmodelle mit Geltungsbereich OAuth 2.0.

Das folgende Diagramm zeigt eine typische Anmeldesitzung für die Verbundauthentifizierung.

Ein Flussdiagramm, das eine Anwendung zeigt, die einen Benutzer zur Eingabe auffordert und ihn bei einem Drittanbieter-IdP anmeldet.
Ablauf der föderierten Authentifizierung
  1. Ein Benutzer greift auf Ihre Anwendung zu.

  2. Er wählt einen Link „Anmelden“ aus.

  3. Die Anwendung leitet den Benutzer zu einer Anmeldeaufforderung mit seinem IdP weiter.

  4. Sie geben ihren Benutzernamen und ihr Passwort ein.

  5. Der IdP validiert die Anmeldeinformationen des Benutzers und stellt fest, dass der Benutzer die Multi-Faktor-Authentifizierung aktiviert hat (). MFA

  6. Der IdP fordert den Benutzer auf, einen MFA Code einzugeben.

  7. Der Benutzer gibt seinen Code ein. MFA

  8. Der IdP leitet den Benutzer mit einer SAML Antwort oder einem Autorisierungscode an den Benutzerpool weiter.

  9. Wenn der Benutzer einen Autorisierungscode übergeben hat, tauscht der Benutzerpool den Code im Hintergrund gegen IdP-Token aus. Der Benutzerpool validiert die IdP-Token und leitet den Benutzer mit einem neuen Autorisierungscode zur Anwendung weiter.

  10. Die Anwendung sammelt den Autorisierungscode aus dem URL Anforderungsparameter, den der Benutzerpool an den Rückruf angehängt hat. URL

  11. Die Anwendung fordert Token mit dem Autorisierungscode an.

  12. Der Token-Endpunkt kehrt JWTs zur Anwendung zurück.

  13. Die Anwendung dekodiert, validiert und speichert oder zwischenspeichert die Daten des Benutzers. JWTs

  14. Die Anwendung zeigt die angeforderte zugriffskontrollierte Komponente an.

  15. Der Benutzer sieht sich seinen Inhalt an.

  16. Später ist das Zugriffstoken des Benutzers abgelaufen und er möchte eine zugriffskontrollierte Komponente aufrufen.

  17. Die Anwendung bestimmt, dass die Benutzersitzung bestehen bleiben soll. Sie fordert mit dem Aktualisierungstoken neue Token vom Token-Endpunkt an.

Varianten und Anpassung

Sie können die Verbundauthentifizierung in der gehosteten Benutzeroberfläche initiieren, wo Benutzer aus einer Liste auswählen können IdPs , die Sie Ihrem App-Client zugewiesen haben. Die gehostete Benutzeroberfläche kann auch nach einer E-Mail-Adresse fragen und die Anfrage eines Benutzers automatisch an den entsprechenden SAML IdP weiterleiten. Für die Authentifizierung mit einem externen Identitätsanbieter ist keine Benutzerinteraktion mit der gehosteten Benutzeroberfläche erforderlich. Ihre Anwendung kann der Autorisierungsserveranforderung eines Benutzers einen Anforderungsparameter hinzufügen und den Benutzer veranlassen, unbemerkt auf seine IdP-Anmeldeseite umzuleiten.

Authentifizierung des Identitätspools

Ein Identitätspool ist eine Komponente für Ihre Anwendung, die sich in Funktion, API Namespace und SDK Modell von einem Benutzerpool unterscheidet. Während Benutzerpools tokenbasierte Authentifizierung und Autorisierung anbieten, bieten Identitätspools Autorisierung für AWS Identity and Access Management (). IAM

Sie können zwei Identitätspools zuweisen und Benutzer mit ihnen anmelden. IdPs Benutzerpools sind als Identitätspool eng integriert IdPs und bieten Identitätspools die meisten Optionen für die Zugriffskontrolle. Gleichzeitig gibt es eine große Auswahl an Authentifizierungsoptionen für Identitätspools. Benutzerpools verbinden Identitätsquellen SAMLOIDC, soziale Quellen, Entwickler- und Gast-Identitätsquellen als Routen zu temporären AWS Anmeldeinformationen aus Identitätspools.

Die Authentifizierung mit einem Identitätspool erfolgt extern — sie folgt einem der zuvor erläuterten Benutzerpool-Flows oder einem Ablauf, den Sie unabhängig von einem anderen IdP entwickeln. Nachdem Ihre Anwendung die erste Authentifizierung durchgeführt hat, leitet sie den Nachweis an einen Identitätspool weiter und erhält im Gegenzug eine temporäre Sitzung.

Die Authentifizierung mit einem Identitätspool passt zu einem Modell, bei dem Sie die Zugriffskontrolle für Anwendungsressourcen und Daten AWS-Services mit IAM Autorisierung durchsetzen. Wie bei der API Authentifizierung in Benutzerpools umfasst eine erfolgreiche Anwendung AWS SDKs für jeden der Dienste, auf die Sie zum Vorteil Ihrer Benutzer zugreifen möchten. AWS SDKswenden Sie die Anmeldeinformationen aus der Identitätspool-Authentifizierung als Signaturen auf API Anfragen an.

Das folgende Diagramm zeigt eine typische Anmeldesitzung für die Identitätspoolauthentifizierung mit einem IdP.

Ein Flussdiagramm, das eine Anwendung zeigt, die einen Benutzer zur Eingabe auffordert und ihn bei einem Drittanbieter-IdP anmeldet.
Ablauf der föderierten Authentifizierung
  1. Ein Benutzer greift auf Ihre Anwendung zu.

  2. Er wählt einen Link „Anmelden“ aus.

  3. Die Anwendung leitet den Benutzer zu einer Anmeldeaufforderung mit seinem IdP weiter.

  4. Sie geben ihren Benutzernamen und ihr Passwort ein.

  5. Der IdP validiert die Anmeldeinformationen des Benutzers.

  6. Der IdP leitet den Benutzer mit einer SAML Antwort oder einem Autorisierungscode zur Anwendung weiter.

  7. Wenn der Benutzer einen Autorisierungscode übergeben hat, tauscht die Anwendung den Code gegen IdP-Token aus.

  8. Die Anwendung dekodiert, validiert und speichert oder zwischenspeichert die Assertion des Benutzers. JWTs

  9. Die Anwendung ruft die Methode auf, die eine Anfrage stellt. GetIdAPI Sie übergibt das Token oder die Assertion des Benutzers und fordert eine Identitäts-ID an.

  10. Der Identitätspool validiert das Token oder die Assertion anhand konfigurierter Identitätsanbieter.

  11. Der Identitätspool gibt eine Identitäts-ID zurück.

  12. Die Anwendung ruft die Methode auf, die eine GetCredentialsForIdentityAPIAnfrage stellt. Sie übergibt das Token oder die Assertions des Benutzers und fordert eine Rolle anIAM.

  13. Der Identitätspool generiert einen neuenJWT. Das neue JWT enthält Ansprüche, die eine IAM Rolle anfordern. Der Identitätspool bestimmt die Rolle auf der Grundlage der Benutzeranfrage und der Rollenauswahlkriterien in der Identitätspoolkonfiguration für den IdP.

  14. AWS Security Token Service (AWS STS) beantwortet die AssumeRoleWithWebIdentityAnfrage aus dem Identitätspool. Die Antwort enthält API Anmeldeinformationen für eine temporäre Sitzung mit einer IAM Rolle.

  15. Die Anwendung speichert die Anmeldeinformationen für die Sitzung.

  16. Der Benutzer führt eine Aktion in der App durch, für die zugriffsgeschützte Ressourcen erforderlich sind. AWS

  17. Die Anwendung wendet die temporären Anmeldeinformationen als Signaturen auf API Anfragen für die erforderlichen Daten an. AWS-Services

  18. IAMbewertet die Richtlinien, die der Rolle in den Anmeldeinformationen zugeordnet sind. Sie werden mit der Anfrage verglichen.

  19. Das AWS-Service gibt die angeforderten Daten zurück.

  20. Die Anwendung rendert die Daten in der Benutzeroberfläche.

  21. Der Benutzer sieht sich die Daten an.

Varianten und Anpassung

Um die Authentifizierung mit einem Benutzerpool zu visualisieren, fügen Sie nach dem Schritt Issue-Token/Assertion eine der vorherigen Benutzerpool-Übersichten ein. Bei der Entwicklerauthentifizierung werden alle Schritte vor „Identität anfordern“ durch eine mit den Anmeldeinformationen des Entwicklers signierte Anfrage ersetzt. Bei der Gastauthentifizierung wird außerdem direkt zu „Identität anfordern“ übersprungen, die Authentifizierung wird nicht validiert und es werden Anmeldeinformationen für eine Rolle mit eingeschränktem Zugriff IAM zurückgegeben.