Zugriff AWS-Services über einen Identitätspool nach der Anmeldung - 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.

Zugriff AWS-Services über einen Identitätspool nach der Anmeldung

Nachdem sich Ihre Benutzer mit einem Benutzerpool angemeldet haben, können sie AWS-Services mit temporären API Anmeldeinformationen, die von einem Identitätspool ausgestellt wurden, darauf zugreifen.

Ihre Web- oder Mobil-App erhält Token aus einem Benutzerpool. Wenn Sie Ihren Benutzerpool als Identitätsanbieter für Ihren Identitätspool konfigurieren, tauscht der Identitätspool Token gegen temporäre AWS Anmeldeinformationen aus. Diese Anmeldeinformationen können auf IAM Rollen und deren Richtlinien beschränkt werden, die Benutzern Zugriff auf eine begrenzte Anzahl von AWS Ressourcen gewähren. Weitere Informationen finden Sie unter Identitäten-Pools – Authentifzierungsablauf.

Das folgende Diagramm zeigt, wie sich eine Anwendung mit einem Benutzerpool anmeldet, Anmeldeinformationen für den Identitätspool abruft und ein Asset von einem anfordert. AWS-Service

Ein Flussdiagramm einer Anwendung, die sich bei einem Amazon Cognito Cognito-Benutzerpool authentifiziert und den Zugriff auf AWS Ressourcen mit einem Identitätspool autorisiert.

Sie können die Anmeldeinformationen für den Identitätspool verwenden, um:

  • Stellen Sie detaillierte Autorisierungsanfragen an Amazon Verified Permissions mit den eigenen Anmeldeinformationen Ihres Benutzers.

  • Stellen Sie eine Connect zu einem Amazon API Gateway REST API oder einem AWS AppSync GraphQL herAPI, das Verbindungen mit autorisiert. IAM

  • Stellen Sie eine Connect zu einem Datenbank-Backend wie Amazon DynamoDB oder Amazon herRDS, das Verbindungen mit autorisiert. IAM

  • Rufen Sie Anwendungsressourcen aus einem Amazon S3 S3-Bucket ab.

  • Initiieren Sie eine Sitzung mit einem WorkSpaces virtuellen Amazon-Desktop.

Identitätspools funktionieren nicht ausschließlich innerhalb einer authentifizierten Sitzung mit einem Benutzerpool. Sie akzeptieren auch die Authentifizierung direkt von externen Identitätsanbietern und können Anmeldeinformationen für nicht authentifizierte Gastbenutzer generieren.

Weitere Informationen zur Verwendung von Identitätspools zusammen mit Benutzerpoolgruppen zur Steuerung des Zugriffs auf Ihre AWS Ressourcen finden Sie unter Hinzufügen von Gruppen zu einem Benutzerpool und. Verwenden der rollenbasierten Zugriffskontrolle Weitere Informationen zu Identitätspools und AWS Identity and Access Management finden Sie auch unterIdentitäten-Pools – Authentifzierungsablauf.

Einrichten eines Benutzerpools mit dem AWS Management Console

Erstellen Sie einen Amazon-Cognito-Benutzerpool und notieren Sie die Benutzerpool-ID und App-Client-ID für jede Ihrer Client-Apps. Weitere Informationen zum Erstellen von Benutzerpools finden Sie unter Erste Schritte mit Benutzerpools.

Einrichtung eines Identitätspools mit dem AWS Management Console

Das folgende Verfahren beschreibt, wie Sie den verwenden AWS Management Console , um einen Identitätspool in einen oder mehrere Benutzerpools und Client-Apps zu integrieren.

So fügen Sie einen Identitätsanbieter (IdP) zu Amazon-Cognito-Benutzerpools hinzu:
  1. Wählen Sie Identitätspools in der Amazon-Cognito-Konsole aus. Wählen Sie einen Identitätspool.

  2. Wählen Sie die Registerkarte Datenzugriff aus.

  3. Wählen Sie Identitätsanbieter hinzufügen aus.

  4. Wählen Sie einen Amazon-Cognito-Benutzerpool.

  5. Geben Sie eine Benutzerpool-ID und eine App-Client-ID ein.

  6. Um die Rolle festzulegen, die Amazon Cognito bei der Ausgabe von Anmeldeinformationen an Benutzer anfordert, die sich bei diesem Anbieter authentifiziert haben, konfigurieren Sie die Rolleneinstellungen.

    1. Sie können Benutzern dieses IdP die Standardrolle zuweisen, die Sie bei der Konfiguration Ihrer authentifizierten Rolle eingerichtet haben, oder Sie können eine Rolle mit Regeln auswählen. Mit einem IdP für Amazon-Cognito-Benutzerpools können Sie auch eine Rolle mit preferred_role in Token auswählen. Weitere Informationen zur cognito:preferred_role-Anforderung finden Sie unter Zuweisen von Prioritätswerten zu Gruppen.

      1. Wenn Sie „Rolle mit Regeln auswählen“ ausgewählt haben, geben Sie den Quellanspruch aus Ihrer Benutzerauthentifizierung, den Operator, den Sie verwenden möchten, um den Anspruch mit der Regel zu vergleichen, den Wert, der zu einer Übereinstimmung mit dieser Rollenauswahl führt, und die Rolle ein, die Sie zuweisen möchten, wenn die Rollenzuweisung übereinstimmt. Wählen Sie Weitere hinzufügen aus, um eine zusätzliche Regel zu erstellen, die auf einer anderen Bedingung basiert.

      2. Wenn Sie „Rolle mit bevorzugtem Rollenanspruch auswählen“ in Tokens ausgewählt haben, stellt Amazon Cognito Anmeldeinformationen für die Rolle im Anspruch Ihres Benutzers aus. cognito:preferred_role Wenn kein Anspruch für eine bevorzugte Rolle vorliegt, stellt Amazon Cognito Anmeldeinformationen auf der Grundlage Ihrer Rollenauflösung aus.

    2. Wählen Sie eine Rollenauflösung. Wenn die Anforderungen Ihres Benutzers nicht Ihren Regeln entsprechen, können Sie Anmeldeinformationen verweigern oder Anmeldeinformationen für Ihre Authentifizierte Rolle ausgeben.

  7. Um die Prinzipal-Tags zu ändern, die Amazon Cognito Benutzern zuweist, wenn es Anmeldeinformationen an Benutzer ausgibt, die sich bei diesem Anbieter authentifiziert haben, konfigurieren Sie die Attribute für die Zugriffskontrolle.

    • Um keine Prinzipal-Tags anzuwenden, wählen Sie Inaktiv aus.

    • Wählen Sie Standardzuordnungen verwenden, um Prinzipal-Tags auf der Grundlage von sub- und aud-Anforderungen anzuwenden.

    • Um Ihr eigenes benutzerdefiniertes Schema von Attributen für Prinzipal-Tags zu erstellen, wählen Sie Benutzerdefinierte Zuordnungen verwenden. Geben Sie dann einen Tag-Schlüssel ein, den Sie aus jeder Anforderung beziehen möchten, die Sie in einem Tag repräsentieren möchten.

  8. Wählen Sie Änderungen speichern aus.

Integration eines Benutzerpools in einen Identitäten-Pool

Nachdem Ihr App-Benutzer authentifiziert wurde, fügen Sie der Anmeldezuweisung im Anmeldeinformationsanbieter das Identitäts-Token des Benutzers hinzu. Der Anbietername ist von Ihrer Amazon-Cognito-Benutzerpool-ID abhängig. Er hat die folgende Struktur:

cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>

Sie können den Wert für ableiten <region> aus der Benutzerpool-ID. Wenn die Benutzerpool-ID beispielsweise lautetus-east-1_EXAMPLE1, dann <region> istus-east-1. Wenn die Benutzerpool-ID lautetus-west-2_EXAMPLE2, dann <region> istus-west-2.

JavaScript
var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, result) { if (result) { console.log('You are now logged in.'); // Add the User's Id Token to the Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'YOUR_IDENTITY_POOL_ID', Logins: { 'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': result.getIdToken().getJwtToken() } }); } }); }
Android
cognitoUser.getSessionInBackground(new AuthenticationHandler() { @Override public void onSuccess(CognitoUserSession session) { String idToken = session.getIdToken().getJWTToken(); Map<String, String> logins = new HashMap<String, String>(); logins.put("cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>", session.getIdToken().getJWTToken()); credentialsProvider.setLogins(logins); } });
iOS - objective-C
AWSServiceConfiguration *serviceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil]; AWSCognitoIdentityUserPoolConfiguration *userPoolConfiguration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:@"YOUR_CLIENT_ID" clientSecret:@"YOUR_CLIENT_SECRET" poolId:@"YOUR_USER_POOL_ID"]; [AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration:serviceConfiguration userPoolConfiguration:userPoolConfiguration forKey:@"UserPool"]; AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"]; AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YOUR_IDENTITY_POOL_ID" identityProviderManager:pool];
iOS - swift
let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil) let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", poolId: "YOUR_USER_POOL_ID") AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool") let pool = AWSCognitoIdentityUserPool(forKey: "UserPool") let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YOUR_IDENTITY_POOL_ID", identityProviderManager:pool)