Identitäten-Pools – Authentifzierungsablauf - 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.

Identitäten-Pools – Authentifzierungsablauf

Mit Amazon Cognito erstellen Sie eindeutige, geräte- und plattformübergreifend konsistente IDs für Ihre Endbenutzer. Amazon Cognito stellt Ihrer Anwendung auch temporäre Anmeldeinformationen mit eingeschränkten Rechten für den Zugriff auf Ressourcen zur Verfügung. AWS Auf dieser Seite werden die Grundlagen der Authentifizierung in Amazon Cognito und der Lebenszyklus einer Identität im Identitätspool erklärt.

Authentifzierungsablauf – externer Anbieter

Bei einer Benutzerauthentifizierung mit Amazon Cognito wird für den Bootstrap der Anmeldeinformationen ein Prozess mit mehreren Schritten verwendet. Amazon Cognito bietet zwei verschiedene Authentifizierungsflüsse für öffentliche Anbieter: erweitert und standardmäßig.

Sobald Sie einen dieser Abläufe abgeschlossen haben, können Sie AWS-Services gemäß den Zugriffsrichtlinien Ihrer Rolle auf andere zugreifen. Standardmäßig erstellt die Amazon-Cognito-Konsole Rollen mit Zugriff auf den Amazon-Cognito-Sync-Speicher und auf Amazon Mobile Analytics. Mehr Informationen zum Erteilen von weiteren Zugriffsberechtigungen finden Sie unter IAMRollen.

Identitätspools akzeptieren die folgenden Artefakte von Anbietern:

Anbieter Authentifizierungsartefakt
Amazon-Cognito-Benutzerpool ID-Token
OpenID Connect () OIDC ID-Token
SAML2.0 SAMLBehauptung
Sozialer Anbieter Zugriffstoken

Erweiterter (vereinfachter) Authentifzierungsablauf

Wenn Sie den erweiterten Authflow verwenden, legt Ihre App in einer Anfrage zunächst einen Authentifizierungsnachweis von einem autorisierten Amazon Cognito Cognito-Benutzerpool oder einem GetIdexternen Identitätsanbieter vor.

  1. Ihre Anwendung legt in einer GetID-Anfrage einen Authentifizierungsnachweis — ein JSON Web-Token oder eine SAML Assertion — von einem autorisierten Amazon Cognito Cognito-Benutzerpool oder einem externen Identitätsanbieter vor.

  2. Ihr Identitätspool gibt eine Identitäts-ID zurück.

  3. Ihre Anwendung kombiniert die Identitäts-ID mit demselben Authentifizierungsnachweis in einer GetCredentialsForIdentityAnfrage.

  4. Ihr Identitätspool gibt AWS Anmeldeinformationen zurück.

  5. Ihre Anwendung signiert AWS API Anfragen mit den temporären Anmeldeinformationen.

Die erweiterte Authentifizierung verwaltet die Logik der IAM Rollenauswahl und des Abrufs von Anmeldeinformationen in Ihrer Identitätspool-Konfiguration. Sie können Ihren Identitätspool so konfigurieren, dass er eine Standardrolle auswählt und die Prinzipien der attributbasierten Zugriffskontrolle (ABAC) oder der rollenbasierten Zugriffskontrolle () auf die Rollenauswahl anwendet. RBAC Die AWS Anmeldeinformationen für die erweiterte Authentifizierung sind eine Stunde lang gültig.

Reihenfolge der Vorgänge bei der erweiterten Authentifizierung
  1. GetId

  2. GetCredentialsForIdentity

Ein Diagramm, das den Ablauf der erweiterten Authentifizierung zeigt

Klassischer Standardauthentifizierungsablauf

Wenn Sie den grundlegenden Authflow verwenden,

  1. Ihre Anwendung legt in einer GetID-Anfrage einen Authentifizierungsnachweis — ein JSON Web-Token oder eine SAML Assertion — von einem autorisierten Amazon Cognito Cognito-Benutzerpool oder einem externen Identitätsanbieter vor.

  2. Ihr Identitätspool gibt eine Identitäts-ID zurück.

  3. Ihre Anwendung kombiniert die Identitäts-ID mit demselben Authentifizierungsnachweis in einer GetOpenIdTokenAnfrage.

  4. GetOpenIdTokengibt ein neues OAuth 2.0-Token zurück, das von Ihrem Identitätspool ausgestellt wurde.

  5. Ihre Anwendung präsentiert das neue Token in einer AssumeRoleWithWebIdentityAnfrage.

  6. AWS Security Token Service AWS STS) gibt AWS Anmeldeinformationen zurück.

  7. Ihre Anwendung signiert AWS API Anfragen mit den temporären Anmeldeinformationen.

Der grundlegende Workflow gibt Ihnen eine genauere Kontrolle über die Anmeldeinformationen, die Sie an Ihre Benutzer verteilen. Die GetCredentialsForIdentity-Anforderung des erweiterten Authentifizierungsablaufs fordert eine Rolle basierend auf dem Inhalt eines Zugriffstokens an. Die AssumeRoleWithWebIdentity Anfrage im klassischen Workflow gewährt Ihrer App eine bessere Möglichkeit, Anmeldeinformationen für jede AWS Identity and Access Management Rolle anzufordern, die Sie mit einer ausreichenden Vertrauensrichtlinie konfiguriert haben. Sie können auch eine benutzerdefinierte Rollensitzungsdauer anfordern.

In Benutzerpools, die keine Rollenzuordnungen haben, können Sie sich mit dem Basic-Authflow anmelden. Für diese Art von Identitätspool gibt es keine Standardrolle mit Authentifizierung oder ohne Authentifizierung und keine konfigurierte rollen- oder attributbasierte Zugriffskontrolle. Wenn Sie versuchenGetOpenIdToken, einen Identitätspool mit Rollenzuordnungen zu verwenden, wird die folgende Fehlermeldung angezeigt.

Basic (classic) flow is not supported with RoleMappings, please use enhanced flow.
Reihenfolge der Vorgänge bei der Standardauthentifizierung
  1. GetId

  2. GetOpenIdToken

  3. AssumeRoleWithWebIdentity

Ein Diagramm, das den Ablauf der Standardauthentifizierung zeigt

Authentifzierungsablauf für entwicklerauthentifizierte Identitäten

Wenn Sie Entwicklerauthentifizierte Identitäten verwenden, nutzt der Client einen anderen Authentifzierungsablauf, der Code außerhalb von Amazon Cognito enthält, um den Benutzer in Ihrem eigenen Authentifizierungssystem zu validieren. Code außerhalb von Amazon Cognito ist als solcher markiert.

Erweiterter Authentifzierungsablauf

Reihenfolge der Vorgänge bei der erweiterten Authentifizierung bei einem Entwickleranbieter
  1. Anmeldung über den Entwickleranbieter (Code außerhalb von Amazon Cognito)

  2. Validierung der Benutzeranmeldung (Code außerhalb von Amazon Cognito)

  3. GetOpenIdTokenForDeveloperIdentity

  4. GetCredentialsForIdentity

Ein Diagramm, das den Ablauf der vom Entwickler authentifizierten erweiterten Authentifizierung zeigt
Reihenfolge der Vorgänge bei der Standardauthentifizierung mit einem Entwickleranbieter
  1. Implementieren Sie Logik außerhalb des Identitätspools, um sich anzumelden und eine Entwickler-Anbieter-ID zu generieren.

  2. Rufen Sie gespeicherte serverseitige Anmeldeinformationen ab. AWS

  3. Senden Sie die ID des Entwickler-Anbieters in einer mit autorisierten AWS Anmeldeinformationen signierten GetOpenIdTokenForDeveloperIdentityAPIAnfrage.

  4. Fordern Sie Anmeldeinformationen für die Anwendung an mit AssumeRoleWithWebIdentity.

Ein Diagramm, das den Ablauf der vom Entwickler authentifizierten Standardauthentifizierung zeigt

Welchen Authentifzierungsablauf sollte ich verwenden?

Der erweiterte Ablauf ist die sicherste Wahl mit dem geringsten Aufwand für Entwickler:

  • Der verbesserte Ablauf reduziert die Komplexität, Größe und Häufigkeit von API Anfragen.

  • Ihre Anwendung muss keine zusätzlichen API Anfragen an stellen AWS STS.

  • Ihr Identitätspool bewertet Ihre Benutzer im Hinblick auf die IAM Rollenanmeldedaten, die sie erhalten sollten. Sie müssen keine Logik für die Rollenauswahl in Ihren Client einbetten.

Wichtig

Wenn Sie einen neuen Identitätspool erstellen, sollten Sie als bewährte Methode die Standardauthentifizierung (klassische Authentifizierung) nicht standardmäßig aktivieren. Um die Standardauthentifizierung zu implementieren, bewerten Sie zunächst die Vertrauensbeziehungen Ihrer IAM Rollen für Webidentitäten. Integrieren Sie dann die Logik für die Rollenauswahl in Ihren Client und schützen Sie den Client vor Änderungen durch Benutzer.

Der grundlegende Authentifizierungsablauf delegiert die Logik der IAM Rollenauswahl an Ihre Anwendung. In diesem Ablauf validiert Amazon Cognito die authentifizierte oder nicht authentifizierte Sitzung Ihres Benutzers und gibt ein Token aus, mit dem Sie Anmeldeinformationen austauschen können. AWS STS Benutzer können die Token der Standardauthentifizierung gegen alle IAM Rollen eintauschen, die Ihrem Identitätspool vertrauen, oder gegen den Status authentifiziert/nicht authentifiziert. amr

Machen Sie sich auch darüber im Klaren, dass die Entwicklerauthentifizierung eine Abkürzung zur Validierung der Identitätsanbieter-Authentifizierung ist. Amazon Cognito vertraut den AWS Anmeldeinformationen, die eine GetOpenIdTokenForDeveloperIdentityAnfrage autorisieren, ohne dass der Inhalt der Anfrage zusätzlich überprüft wird. Schützen Sie die Geheimnisse, die die Entwicklerauthentifizierung autorisieren, vor dem Zugriff durch Benutzer.

APIZusammenfassung

GetId

Der GetIdAPIAnruf ist der erste Anruf, der zur Einrichtung einer neuen Identität in Amazon Cognito erforderlich ist.

Nicht authentifizierter Zugriff

Amazon Cognito kann nicht authentifizierten Gästen Zugriff auf Ihre Anwendungen gewähren. Wenn diese Funktion in Ihrem Identitätspool aktiviert ist, können Benutzer jederzeit über den GetId API eine neue Identitäts-ID anfordern. Diese Identitäts-ID wird von der Anwendung für nachfolgende Aufrufe an Amazon Cognito zwischengespeichert. Das AWS Handy SDKs und das AWS SDK für JavaScript im Browser haben Anbieter für Anmeldeinformationen, die dieses Caching für Sie übernehmen.

Authentifizierter Zugriff

Wenn Sie Ihre Anwendung mit Unterstützung für einen öffentlichen Login-Anbieter (Facebook, Google+, Login with Amazon oder Sign in with Apple) konfiguriert haben, können Benutzer auch Tokens (OAuthoder OpenID Connect) angeben, die sie bei diesen Anbietern identifizieren. Bei der Verwendung in einem GetId-Aufruf erstellt Amazon Cognito entweder eine neue authentifizierte Identität oder gibt die Identität zurück, die bereits mit dieser bestimmten Anmeldung verknüpft ist. Amazon Cognito führt hierzu die Validierung des Tokens beim Anbieter durch und stellt Folgendes sicher:

  • Das Token ist gültig und vom konfigurierten Anbieter;

  • Das Token ist nicht abgelaufen;

  • Das Token entspricht der durch den Anbieter erstellten Anwendungs-ID (z. B. Facebook-App-ID);

  • Das Token entspricht der Benutzer-ID.

GetCredentialsForIdentity

Sie GetCredentialsForIdentityAPIkönnen aufgerufen werden, nachdem Sie eine Identitäts-ID eingerichtet haben. Diese Operation entspricht also AssumeRoleWithWebIdentityfunktionell dem Aufrufen GetOpenIdToken.

Damit Amazon Cognito in AssumeRoleWithWebIdentity Ihrem Namen anrufen kann, müssen Ihrem Identitätspool IAM Rollen zugeordnet sein. Sie können dies über die Amazon Cognito Cognito-Konsole oder manuell über die SetIdentityPoolRolesBedienung tun.

GetOpenIdToken

Stellen Sie eine GetOpenIdTokenAPIAnfrage, nachdem Sie eine Identitäts-ID eingerichtet haben. Zwischenspeichern Sie die Identität IDs nach Ihrer ersten Anfrage und starten Sie nachfolgende (klassische) Basissitzungen für diese Identität mitGetOpenIdToken.

Die Antwort auf eine GetOpenIdToken API Anfrage ist ein Token, das Amazon Cognito generiert. Sie können dieses Token als WebIdentityToken Parameter in einer AssumeRoleWithWebIdentityAnfrage einreichen.

Bevor Sie das OpenID-Token einreichen, überprüfen Sie es in Ihrer App. Sie können OIDC Bibliotheken in Ihrer SDK oder einer Bibliothek wie verwenden aws-jwt-verifyum zu bestätigen, dass Amazon Cognito das Token ausgestellt hat. Die Signaturschlüssel-ID oderkid, des OpenID-Tokens ist eine der in der Amazon Cognito Cognito-Identität aufgeführten jwks_uri Dokument †. Diese Schlüssel können sich ändern. Ihre Funktion, die Amazon-Cognito-Identitätstokens überprüft, sollte ihre Schlüsselliste regelmäßig aus dem Dokument jwks_uri aktualisieren. Amazon Cognito legt die Aktualisierungsdauer im Cache-Control-Antwort-Header jwks_uri fest, die derzeit auf ein max-age von 30 Tagen festgelegt ist.

Nicht authentifizierter Zugriff

Um ein Token für eine nicht authentifizierte Identität abzurufen, benötigen Sie nur die Identitäts-ID. Es ist nicht möglich, ein nicht authentifiziertes Token für authentifizierte oder von Ihnen deaktivierte Identitäten zu erhalten.

Authentifizierter Zugriff

Wenn Sie eine authentifizierte Identität haben, müssen Sie mindestens ein gültiges Token für eine Anmeldung übergeben, die dieser Identität bereits zugeordnet ist. Alle während des GetOpenIdToken-Aufrufs übergebenen Token müssen dieselbe zuvor erwähnte Validierung bestehen; Wenn eines der Token fehlschlägt, schlägt der gesamte Aufruf fehl. Die Antwort des GetOpenIdToken-Aufrufs umfasst auch die Identitäts-ID. Der Grund hierfür ist, dass die von Ihnen übergebene Identitäts-ID u. U. nicht identisch mit der ID ist, die zurückgegeben wird.

Verknüpfen von Anmeldungen

Wenn Sie ein Token für eine Anmeldung übergeben, die noch keiner Identität zugewiesen ist, gilt die Anmeldung als mit der zugehörigen Identität „verknüpft“. Sie können nur eine Anmeldung pro öffentlichem Anbieter verknüpfen. Wenn Sie versuchen, mehr als eine Anmeldung mit einem öffentlichen Anbieter zu verknüpfen, wird eine ResourceConflictException-Fehlermeldung ausgelöst. Wenn eine Anmeldung nur mit einer vorhandenen Identität verknüpft ist, stimmt die vom GetOpenIdToken-Aufruf zurückgegebene Identitäts-ID mit der übergebenen ID überein.

Zusammenführen von Identitäten

Wenn Sie ein Token für eine Anmeldung übergeben, die derzeit nicht mit der angegebenen, sondern mit einer anderen Identität verknüpft ist, werden die beiden Identitäten zusammengeführt. Nach dem Zusammenführen wird eine Identität zurückgegeben. parent/owner of all associated logins and the other is disabled. In this case, the identity ID of the parent/owner Sie müssen Ihren lokalen Cache aktualisieren, wenn dieser Wert abweicht. Die Anbieter im AWS Handy SDKs oder AWS SDK JavaScript im Browser führen diesen Vorgang für Sie durch.

GetOpenIdTokenForDeveloperIdentity

Der GetOpenIdTokenForDeveloperIdentityVorgang ersetzt die Verwendung von GetIdund GetOpenIdTokenvom Gerät, wenn vom Entwickler authentifizierte Identitäten verwendet werden. Da Ihre Anwendung Anfragen für diesen API Vorgang mit AWS Anmeldeinformationen signiert, vertraut Amazon Cognito darauf, dass die in der Anfrage angegebene Benutzer-ID gültig ist. Die Entwicklerauthentifizierung ersetzt die Token-Validierung, die Amazon Cognito mit externen Anbietern durchführt.

Die Payload dafür API beinhaltet eine logins Karte. Diese Map muss den Schlüssel Ihres Entwickleranbieters und einen Wert als Kennung für den Benutzer in Ihrem System enthalten. Wenn die Benutzer-ID noch nicht mit einer vorhandenen Identität verknüpft ist, erstellt Amazon Cognito eine neue Identität und gibt die neue Identitäts-ID sowie ein OpenID-Connect-Token für diese Identität zurück. Wenn die Benutzer-ID bereits verknüpft ist, gibt Amazon Cognito die bereits vorhandene Identitäts-ID und ein OpenID-Connect-Token zurück. Zwischenspeichern Sie die Entwickleridentität IDs nach Ihrer ersten Anfrage und starten Sie nachfolgende (klassische) Basissitzungen für diese Identität mitGetOpenIdTokenForDeveloperIdentity.

Die Antwort auf eine GetOpenIdTokenForDeveloperIdentity API Anfrage ist ein Token, das Amazon Cognito generiert. Sie können dieses Token als WebIdentityToken-Parameter in einer AssumeRoleWithWebIdentity-Anfrage einreichen.

Bevor Sie das OpenID-Connect-Token einreichen, überprüfen Sie es in Ihrer App. Sie können OIDC Bibliotheken in Ihrer SDK oder einer Bibliothek wie verwenden aws-jwt-verifyum zu bestätigen, dass Amazon Cognito das Token ausgestellt hat. Die Signaturschlüssel-ID, oder kid, des OpenID-Connect-Tokens ist eine der im jwks_uri-Dokument von Amazon Cognito Identity aufgeführten IDs. Diese Schlüssel können sich ändern. Ihre Funktion, die Amazon-Cognito-Identitätstokens überprüft, sollte ihre Schlüsselliste regelmäßig aus dem Dokument jwks_uri aktualisieren. Amazon Cognito legt die Aktualisierungsdauer im cache-control-Antwort-Header jwks_uri fest, die derzeit auf ein max-age von 30 Tagen festgelegt ist.

Verknüpfen von Anmeldungen

Wenn zusätzliche Anmeldungen übergeben werden, die nicht bereits mit einer Identität verknüpft sind, erfolgt wie bei den externen Anbietern eine implizite Verknüpfung dieser Anmeldungen mit dieser Identität. Wenn Sie die Anmeldung eines externen Anbieters mit einer Identität verknüpfen, kann der Benutzer den Authentifizierungsablauf des externen Anbieters für diesen Anbieter verwenden. Er kann jedoch den Namen Ihres Entwickleranbieters in der Anmeldungsübersicht nicht verwenden, wenn er GetId oder GetOpenIdToken aufruft.

Zusammenführen von Identitäten

Mit vom Entwickler authentifizierten Identitäten unterstützt Amazon Cognito sowohl die implizite Zusammenführung als auch die explizite Zusammenführung durch. MergeDeveloperIdentitiesAPI Bei dieser expliziten Zusammenführung können Sie zwei Identitäten mit Benutzer-IDs in Ihrem System als eine einzelne Identität kennzeichnen. Wenn Sie die Quell- und Ziel-Benutzer-IDs angeben, werden sie von Amazon Cognito zusammengeführt. Wenn Sie das nächste Mal ein OpenID-Connect-Token für eine der Benutzer-IDs anfragen, wird die gleiche Identitäts-ID zurückgegeben.

AssumeRoleWithWebIdentity

Sobald Sie ein OpenID Connect-Token haben, können Sie dieses über die AssumeRoleWithWebIdentityAPIAnfrage an AWS Security Token Service (AWS STS) gegen temporäre AWS Anmeldeinformationen eintauschen.

Da es keine Einschränkung für die Anzahl der Identitäten gibt, die Sie erstellen können, ist es wichtig, die Ihren Benutzern erteilten Benutzerberechtigungen zu verstehen. Richten Sie verschiedene IAM Rollen für Ihre Anwendung ein: eine für nicht authentifizierte Benutzer und eine für authentifizierte Benutzer. Die Amazon Cognito Cognito-Konsole kann Standardrollen erstellen, wenn Sie Ihren Identitätspool zum ersten Mal einrichten. Für diese Rollen wurden praktisch keine Berechtigungen erteilt. Passen Sie sie an Ihre Bedürfnisse an.

Weitere Informationen zu Vertrauensstellungen und Berechtigungen für Rollen.

† Das Standarddokument jwks_uri von Amazon Cognito Identity enthält in den meisten AWS-Regionen Informationen über die Schlüssel, mit denen Tokens für Identitätspools signiert werden. Die folgenden Regionen haben unterschiedliche jwks_uri-Dokumente.

Amazon Cognito Identity JSON web key URIs in other AWS-Regionen
AWS-Region Pfad zum jwks_uri-Dokument
AWS GovCloud (US-West) https://cognito-identity.us-gov-west-1.amazonaws.com/.well-known/jwks_uri
China (Peking) https://cognito-identity.cn-north-1.amazonaws.com.cn/.well-known/jwks_uri
Opt-in-Regionen wie Europa (Mailand) und Afrika (Kapstadt) https://cognito-identity.Region.amazonaws.com/.well-known/jwks_uri

Sie können die jwks_uri auch vom Aussteller oder dem iss, den Sie im OpenID-Token von Amazon Cognito erhalten, extrapolieren. Der Discovery-Endpunkt OIDC -standard <issuer>/.well-known/openid-configuration listet einen Pfad zur jwks_uri für Ihr Token auf.