Wie verwende ich Amazon-Cognito-Identitätspools, um Benutzern Zugriff auf AWS Services zu gewähren?

Lesedauer: 3 Minute
0

Ich möchte Amazon-Cognito-Benutzerpools verwenden, um Benutzern Zugriff auf AWS-Ressourcen zu gewähren.

Lösung

Sie können Amazon-Cognito-Identitätspools in Amazon-Cognito-Benutzerpools integrieren, um temporäre Anmeldeinformationen für den Zugriff auf AWS-Ressourcen auszustellen. Richten Sie einen Authentifizierungsanbieter ein, indem Sie einen Identitätspool mit einem Benutzerpool konfigurieren. Nachdem Sie einen Benutzer über den Benutzerpool authentifiziert haben, verwenden Sie das Benutzeridentitätstoken mit einem Authentifizierungsablauf, um temporäre Anmeldeinformationen aus dem Identitätspool abzurufen. Es gibt einen grundlegenden Authentifizierungsablauf und einen erweiterten Authentifizierungsablauf zum Abrufen temporärer Anmeldeinformationen.

Wichtig: Ersetzen Sie in den folgenden Beispielbefehlen für das AWS Command Line Interface (AWS CLI) alle Instances von Beispielzeichenfolgen durch Ihre Werte. (Ersetzen Sie beispielsweise „example_identity_pool_id“ durch Ihre Identitätspool-ID oder „abcdef“ durch die Identitäts-ID Ihrer AWS-Region.)

Grundlegender Ablauf

Hinweis: Wenn Sie beim Ausführen von Befehlen von AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Führen Sie die folgenden Schritte aus, um temporäre AWS-Anmeldeinformationen mithilfe des grundlegenden authflows abzurufen:

1.    Wählen Sie in der alten Amazon-Cognito-Konsole die Option Identitätspools verwalten aus. Wählen Sie den Namen des Amazon-Cognito-Identitätspools aus, den Sie aktualisieren, und wählen Sie dann Identitätspool bearbeiten. Wählen Sie unter Einstellungen für den Authentifizierungsablauf die Option Basic (Classic) Flow zulassen aus, und speichern Sie dann die Änderungen.

2.    Rufen Sie die GetID-API auf, um eine Benutzeridentität im Identitätspool zu generieren oder abzurufen.

Ein Beispiel für den get-id-Befehl:

aws cognito-identity get-id --identity-pool-id "example_identity_pool_id" --logins cognito-idp.example_region.amazonaws.com/example_cognito_user_pool_id=example_cognito_user_id_token

Eine Beispielausgabe:

{
    "IdentityId": "region:abcdef"
}

3.    Um das offene ID-Token abzurufen, verwenden Sie das Ergebnis aus Schritt 2, um die GetOpenIDToken-API aufzurufen.

Ein Beispiel für den Befehl get-open-id-token:

aws cognito-identity get-open-id-token --identity-id "region:abcdef" --logins cognito-idp.example_region.amazonaws.com/example_user_pool_id=example_cognito_user_id_token

Eine Beispielausgabe:

{
    "IdentityId": "region:abcdef",
    "Token": "HIJKLMN"
}

4.    Um die temporären Anmeldeinformationen der authentifizierten Rolle abzurufen, verwenden Sie das Token aus Schritt 3, um die AssumeRoleWithWebIdentity-API aufzurufen.

Ein Beispiel für den Befehl assume-role-with-web-identity:

aws sts assume-role-with-web-identity --role-arn "example_auth_role_arn_of_the_identity_pool" --web-identity-token "HIJKLMN" --role-session-name "example_session_name"

Eine Beispielausgabe:

{
    "Credentials": {
        AccessKeyId": "xxxxxxxxxxxx",
        SecretAccessKey": "xxxxxxxxxxxx",
        SessionToken": "xxxxxxxxxxxx",
        Expiration": ""
    },
    "SubjectFromWebIdentityToken": "",
    "AssumedRoleUser": {
        "AssumedRoleId": "",
        "Arn": ""
    },
    "Provider": "cognito-identity.amazonaws.com",
    "Audience": ""
}

Verbesserter Ablauf

Führen Sie die folgenden Schritte aus, um temporäre AWS-Anmeldeinformationen mithilfe des verbesserte authflows abzurufen:

1.    Rufen Sie die GetID-API auf, um eine Benutzeridentität im Amazon-Cognito-Identitätspool zu generieren oder abzurufen.

Ein Beispiel für den get-id-Befehl:

aws cognito-identity get-id --identity-pool-id "example_identity_pool_id" --logins cognito-idp.example_region.amazonaws.com/example_cognito_user_pool_id=example_cognito_user_id_token

Eine Beispielausgabe:

{
    "IdentityId": "region:abcdef"
}

2.    Rufen Sie die GetCredentialsForIdentity-API auf, um temporäre Anmeldeinformationen aus dem Identitätspool abzurufen.

Ein Beispiel für den Befehl get-credentials-for-identity:

aws cognito-identity get-credentials-for-identity --identity-id region:abcdef --logins cognito-idp.example_region.amazonaws.com/example_cognito_user_pool_id = example_cognito_user_id_token

Eine Beispielausgabe:

{
    "IdentityId": "region:abcdef",
    "Credentials": {
        "AccessKeyId": "xxxxxxxxxx",
        "SecretKey": "xxxxxxxxxx",
        "SessionToken": "xxxxxxxxxx",
        "Expiration": ""
    }
}

Weitere Informationen zu komplexen rollenbasierten Zugriffskontrollen und attributbasierten Zugriffskontrollen finden Sie unter detaillierte Zugriffskontrolle mit Amazon-Cognito-Identitätspools.


Ähnliche Informationen

Authentifizierungsablauf für Identitätspools (Verbundidentitäten)

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr