Gängige Szenarien
Anmerkung
Wir empfehlen, dass Sie menschliche Benutzer auffordern, beim Zugriff auf AWS temporäre Anmeldeinformationen zu verwenden. Haben Sie darüber nachgedacht, AWS IAM Identity Center zu verwenden? Sie können IAM Identity Center verwenden, um den Zugriff auf mehrere AWS-Konten zentral zu verwalten und Benutzern einen MFA-geschützten Single Sign-On (SSO)-Zugriff auf alle ihnen zugewiesenen Konten von einem Ort aus zu ermöglichen. Mit IAM Identity Center können Sie Benutzeridentitäten in IAM Identity Center erstellen und verwalten oder einfach eine Verbindung zu Ihrem vorhandenen SAML-2.0-kompatiblen Identitätsanbieter herstellen. Weitere Informationen finden Sie unter Was ist IAM Identity Center? im AWS IAM Identity Center-Benutzerhandbuch.
Sie können einen externen Identitätsanbieter (IdP) verwenden, um Benutzeridentitäten außerhalb von AWS und dem externen IdP zu verwalten. Ein externer IdP kann AWS Identitätsinformationen entweder über OpenID Connect (OIDC) oder Security Assertion Markup Language (SAML) bereitstellen. OIDC wird häufig verwendet, wenn eine Anwendung, die nicht in AWS ausgeführt wird, Zugriff auf AWS-Ressourcen benötigt.
Wenn Sie den Verbund mit einem externen IdP konfigurieren möchten, erstellen Sie einen IAM–Identitätsanbieter, um AWS über den externen Identitätsanbieter und dessen Konfiguration zu informieren. Dadurch wird eine Vertrauensbasis zwischen Ihrem AWS-Konto und dem externen IdP aufgebaut. Die folgenden Themen bieten gängige Szenarien zur Verwendung von IAM-Identitätsanbietern.
Amazon Cognito für mobile Apps
Die bevorzugte Methode zur Nutzung des OIDC-Verbunds ist die Nutzung von Amazon Cognito
Damit die mobile App auf ihre AWS-Ressourcen zugreifen kann, registriert sich Adele zunächst für eine Entwickler-ID bei ihren ausgewählten Identitätsanbietern. Außerdem konfiguriert sie die Anwendung bei jedem dieser Anbieter. In ihrem AWS-Konto, das den Amazon-S3-Bucket und die DynamoDB-Tabelle für das Spiel enthält, erstellt Adele mithilfe von Amazon Cognito IAM-Rollen, die genau die Berechtigungen enthalten, die für das Spiel benötigt werden. Wenn sie einen OIDC-IdP verwendet, erstellt sie auch eine IAM-OIDC-Identitätsanbieter-Entität, um Vertrauen zwischen einem Amazon-Cognito-Identitätspool in ihrem AWS-Konto und dem Identitätsanbieter herzustellen.
Im Code der App ruft Adele die Anmeldeschnittstelle des zuvor konfigurierten Identitätsanbieters auf. Der Identitätsanbieter übernimmt die Details der Anmeldung und die App erhält ein OAuth-Zugriffs-Token oder ein OIDC-ID-Token vom Anbieter. Für diese Authentifizierungsinformationen erhält Adeles App temporäre Sicherheitsanmeldeinformationen, die sich aus einer AWS-Zugriffsschlüssel-ID, einem geheimen Zugriffsschlüssel und einem Sitzungs-Token zusammensetzen. Mithilfe dieser Anmeldeinformationen kann die App nun auf die von angebotenen Webservices zugreifen AWS. Dabei ist die App auf die Berechtigungen beschränkt, die in der angenommenen Rolle festgelegt wurden.
Die nachfolgende Abbildung zeigt eine vereinfachte Darstellung dieses Vorgangs mit Anmeldung über Login with Amazon als Identitätsanbieter. In Schritt 2 kann die App auch Facebook, Google oder einen anderen OIDC-kompatiblen Identitätsanwender nutzen, was in der Abbildung jedoch nicht dargestellt ist.
-
Ein Kunde startet Ihre App auf einem Mobilgerät. Er wird aufgefordert, sich anzumelden.
-
Die App verwendet die Anmeldung über Login with Amazon, um die Anmeldeinformationen des Benutzers zu überprüfen.
-
Die App verwendet die Amazon-Cognito-API-Operationen
GetIdundGetCredentialsForIdentityum das Login-with-Amazon-ID-Token gegen ein Amazon-Cognito-Token auszutauschen. Amazon Cognito, das so konfiguriert wurde, dass es Ihrem Login-with-Amazon-Projekt vertraut, generiert ein Token, das es für temporäre Sitzungs-Anmeldeinformationen mit AWS STS austauscht. -
Die App erhält temporäre Sicherheitsanmeldeinformationen von Amazon Cognito. Ihre App kann auch den Basic (Classic)-Workflow in Amazon Cognito verwenden, um Tokens von AWS STS mithilfe von
AssumeRoleWithWebIdentityabzurufen. Weitere Informationen finden Sie unter Identitätspools (Verbundidentitäten) Authentifizierungsablauf im Amazon-Cognito-Entwicklerhandbuch. -
Über diese temporären Sicherheitsanmeldeinformationen kann die App auf alle AWS-Ressourcen zugreifen, die für die App benötigt werden. Über die mit den temporären Sicherheitsanmeldeinformationen verknüpfte Rolle sowie die ihr zugewiesenen Richtlinien wird genau festgelegt, welcher Zugriff gewährt wird.
Gehen Sie wie folgt vor, um Ihre App so zu konfigurieren, dass Amazon Cognito verwendet wird, um Benutzer zu authentifizieren und Ihrer App Zugriff auf AWS-Ressourcen zu gewähren. Wie Sie dieses Szenario genau umsetzen, wird in der Dokumentation zu Amazon Cognito erläutert.
-
(Optional) Melden Sie sich als Entwickler bei Login with Amazon, Facebook, Google oder einem anderen OpenID Connect (OIDC)-kompatiblen Identitätsanbieter an und konfigurieren Sie eine oder mehrere Anwendungen mit dem Anbieter. Dieser Schritt ist optional, da Amazon Cognito auch unauthentifizierten (Gast-)Zugang für Ihre Benutzer unterstützt.
-
Wechseln Sie zu Amazon Cognito im AWS-Managementkonsole
. Verwenden Sie den Amazon Cognito-Assistenten, um einen Identitätspool zu erstellen. Dabei handelt es sich um einen Container, den Amazon Cognito verwendet, um die Identitäten der Endbenutzer für Ihre Anwendungen zu organisieren. Identitäten-Pools können zwischen Apps geteilt werden. Wenn Sie einen Identitätspool einrichten, erstellt Amazon Cognito eine oder zwei IAM-Rollen (eine für authentifizierte Identitäten und eine für nicht authentifizierte "Gast"-Identitäten), die Berechtigungen für Amazon Cognito-Benutzer definieren. -
Integrieren Sie AWS
Amplify in Ihre App und importieren Sie die Dateien, die für die Verwendung von Amazon Cognito erforderlich sind. -
Erstellen Sie eine Instance des Amazon Cognito Credentials Providers und übergeben Sie die Identitätspool-ID, Ihre AWS-Konto-Nummer und den Amazon-Ressourcenname (ARN) der Rollen, die Sie mit dem Identitätspool verknüpft haben. Der Amazon Cognito-Assistent im AWS-Managementkonsole bietet Beispielcode, um Ihnen den Einstieg zu erleichtern.
-
Wenn Ihre App auf eine AWS-Ressource zugreift, übergeben Sie die Anmeldeinformationsanbieter-Instance an das Client-Objekt, das wiederum temporäre Sicherheitsanmeldeinformationen an den Client ausgibt. Die Berechtigungen für die Anmeldeinformationen basieren auf der Rolle bzw. den Rollen, die Sie zuvor definiert haben.
Weitere Informationen finden Sie unter:
-
Anmelden (Android)
in der AWS Amplify-Framework-Dokumentation. -
Anmelden (iOS)
in der AWS Amplify-Framework-Dokumentation.
OIDC-Verbund für mobile Apps
Für optimale Ergebnisse verwenden Sie Amazon Cognito als Identity Broker für fast alle OIDC-Verbundszenarien. Amazon Cognito ist einfach zu bedienen und bietet zusätzliche Funktionen wie anonymen (nicht authentifizierten) Zugriff und die Synchronisierung von Benutzerdaten über Geräte und Anbieter hinweg. Wenn Sie jedoch bereits durch manuelles Aufrufen der AssumeRoleWithWebIdentity-API eine App erstellt haben, die den OIDC-Verbund verwendet, können Sie diese weiterhin verwenden und Ihre Apps werden weiterhin einwandfrei funktionieren.
Der Prozess zur Nutzung des OIDC-Verbunds ohne Amazon Cognito folgt diesem allgemeinen Schema:
-
Melden Sie sich als Entwickler über den externen Identitätsanbieter (Identity Provider, IdP) an und konfigurieren Sie Ihre App mit dem Identitätsanbieter, der Ihnen eine eindeutige ID für Ihre App übermittelt. (Verschiedene Identitätsanbieter verwenden unterschiedliche Begriffe für diesen Prozess. In dieser Übersicht wird der Begriff configure für den Prozess der Identifizierung Ihrer App mit dem IdP verwendet.) Jeder Identitätsanbieter liefert Ihnen eine App-ID, die nur für diesen Identitätsanbieter gilt. Wenn Sie also dieselbe App mit mehreren Identitätsanbietern konfigurieren, hat Ihre App mehrere App-IDs. Sie können mehrere Apps mit jedem Anbieter konfigurieren.
Die folgenden externen Links stellen Informationen zur Verwendung einiger der gängigen Identitätsanbieter bereit:
-
Add Facebook Login to Your App or Website
auf der Facebook-Entwickler-Website. -
Using OAuth 2.0 for Login (OpenID Connect)
auf der Google-Entwickler-Website.
Wichtig
Wenn Sie einen OIDC-Identitätsprovider von Google, Facebook oder Amazon Cognito verwenden, müssen Sie keinen separaten IAM-Identitätsprovider im AWS-Managementkonsole erstellen. AWS hat diese OIDC-Identitätsprovider bereits integriert und steht Ihnen zur Verfügung. Überspringen Sie den folgenden Schritt, und wechseln Sie direkt zum Erstellen neuer Rollen mit Ihrem Identitätsanbieter.
-
Wenn Sie einen anderen IdentiIdP als Google, Facebook oder Amazon Cognito verwenden, der mit OIDC kompatibel ist, erstellen Sie dafür eine IAM-Identitätsanbieter-Entität.
-
Erstellen Sie in IAM eine oder mehrere Rollen. Definieren Sie für jede Rolle, wer die Rolle übernehmen kann (die Vertrauensrichtlinie), und welche Berechtigungen die Benutzer der App haben sollen (die Berechtigungsrichtlinie). In der Regel erstellen Sie eine Rolle für jeden Identitätsanbieter, den die Anwendung unterstützt. Sie können beispielsweise eine Rolle erstellen, die von einer Anwendung übernommen wird, wenn sich der Benutzer über Login with Amazon anmeldet, eine zweite Rolle für die gleiche Anwendung, in der der Benutzer sich mit Facebook anmeldet, und eine dritte Rolle für die Anwendung, in der sich der Benutzer mit Google angemeldet. Für die Vertrauensbeziehung geben Sie den Identitätsanbieter (wie Amazon.com) als
Principal(die vertrauenswürdigen Entität) an und schließen eineConditionein, die der vom Identitätsanbieter zugewiesenen App-ID entspricht. Beispiele von Rollen für verschiedene Anbieter sind in beschrieben Erstellen einer Rolle für einen externen Identitätsanbieter . -
Authentifizieren Sie Ihre Benutzer in der Anwendung mit dem Identitätsanbieter. Die Einzelheiten zur Vorgehensweise unterscheiden sich sowohl nach Maßgabe des verwendeten Identitätsanbieters (Login with Amazon, Facebook oder Google) als auch der Plattform, auf der die App ausgeführt wird. Beispiel: Die Authentifizierungsmethode einer Android-App kann sich von der einer iOS-App oder einer JavaScript-basierten Webanwendung unterscheiden.
Wenn der Benutzer nicht bereits angemeldet haben, zeigt der Identitätsanbieter in der Regel eine Anmeldeseite an. Nachdem der Identitätsanbieter den Benutzer authentifiziert hat, gibt er einen Authentifizierungs-Token mit Informationen über den Benutzer an Ihre App zurück. Die Informationen hängt davon ab, was der Identitätsanbieter bereitstellt und welche Informationen der Benutzer weitergeben möchte. Sie können diese Informationen in Ihrer App verwenden.
-
Führen Sie in Ihrer App einen nicht signierten Aufruf an die
AssumeRoleWithWebIdentity-Aktion durch, um temporäre Sicherheitsanmeldeinformationen anzufordern. In der Anforderung geben Sie das Authentifizierung-Token des Identitätsanbieters weiter und spezifizieren den Amazon-Ressourcennamen (ARN) für die IAM-Rolle, die Sie für diesen Identitätsanbieter erstellt haben. AWS verifiziert, dass das Token vertrauenswürdig und gültig ist. Wenn dies der Fall ist, werden temporäre Sicherheitsanmeldeinformationen an Ihre App zurückgegeben, die über die Berechtigungen für die Rolle verfügen, die Sie in der Anforderung nennen. Die Antwort umfasst auch Metadaten über den Benutzer vom Identitätsanbieter, wie z. B. die eindeutige Benutzer-ID, die der Identitätsanbieter dem Benutzer zuweist. -
Unter Verwendung der temporären Sicherheitsanmeldeinformationen aus der
AssumeRoleWithWebIdentity-Antwort übermittelt die App signierte Anforderungen an die AWS-API-Operationen. Die Benutzer-ID-Informationen des IdP können Benutzer in Ihrer App unterscheiden. Sie können beispielsweise Objekte in Amazon-S3-Ordner ablegen, die die Benutzer-ID als Präfix oder Suffix enthalten. Dadurch können Sie Richtlinien zur Zugriffskontrolle erstellen, die den Ordner sperren, sodass nur der Benutzer mit der entsprechenden ID darauf zugreifen kann. Weitere Informationen finden Sie unter Verbundbenutzer-Prinzipale von AWS STS. -
Ihre App sollte die temporären Sicherheitsanmeldeinformationen zwischenspeichern, sodass Sie nicht jedes Mal, wenn die App eine Anforderung an machen muss, neue abrufen müssen AWS. Die Anmeldeinformationen sind standardmäßig eine Stunde gültig. Wenn die Anmeldeinformationen abgelaufen sind (oder davor), rufen Sie
AssumeRoleWithWebIdentityerneut auf, um einen neuen Satz an temporären Sicherheitsanmeldeinformationen abzurufen. Abhängig vom Identitätsanbieter und der Vorgehensweise beim Verwalten seiner Token müssen Sie möglicherweise das Token aktualisieren, bevor Sie einen neuen Aufruf anAssumeRoleWithWebIdentitymachen, da die Token des Identitätsanbieters normalerweise nach einer bestimmten Zeit ablaufen. Wenn Sie das AWS-SDK for iOS oder das AWS-SDK for Android verwenden, können Sie die -AmazonSTSCredentialsProvider-Aktion nutzen. Diese übernimmt die Verwaltung der temporären IAM-Anmeldeinformationen, einschließlich deren Aktualisierung, falls erforderlich.