Amazon Cognito
Amazon Cognito kann als Identitätsanbieter für den Zugriff auf AgentCore Gateway und Runtime oder als AgentCore Identitätsanbieter für ausgehenden Ressourcenzugriff konfiguriert werden. Auf diese Weise können Ihre Agenten Agentenbenutzer mit Cognito als Identitätsanbieter und Autorisierungsserver authentifizieren und autorisieren, oder Ihre Agenten können Anmeldeinformationen für den Zugriff auf von Cognito autorisierte Ressourcen abrufen.
Eingehend
Um Cognito als Identitätsanbieter und Autorisierungsserver für den Zugriff auf AgentCore Gateway und Runtime hinzuzufügen, müssen Sie:
-
Konfigurieren Sie die Discovery-URL aus Ihrem IDP-Verzeichnis. Auf diese Weise kann AgentCore Identity die Metadaten zu Ihrem OAuth-Autorisierungsserver und den Token-Bestätigungsschlüsseln abrufen.
-
Geben Sie „Gültig“
clientIdoder „audAnsprüche“ für das Token ein. Dies hilft bei der Validierung der von Ihrem IDP stammenden Token und ermöglicht den Zugriff für Token, die erwartete Ansprüche enthalten.
Gehen Sie wie folgt vor, um einen Cognito-Benutzerpool als Identitätsanbieter für eingehenden Datenverkehr für die Benutzerauthentifizierung mit AgentCore Runtime zu erstellen. In den folgenden Schritten werden ein Cognito-Benutzerpool und ein Benutzerpool-Client erstellt, ein Benutzer hinzugefügt und ein Bearer-Token für den Benutzer generiert. Das Token ist standardmäßig 60 Minuten gültig.
So erstellen Sie einen Cognito-Benutzerpool als eingehenden Identitätsanbieter für die Runtime-Authentifizierung
-
Erstellen Sie eine Datei mit dem Namen
setup_cognito.shund dem folgenden Inhalt:Anmerkung
Das folgende Skript dient nur als Beispiel. Sie sollten die Benutzerpooleinstellungen und Benutzeranmeldedaten nach Bedarf für Ihre Anwendung anpassen. Verwenden Sie dieses Skript nicht direkt in Produktionsumgebungen.
#!/bin/bash # Create User Pool and capture Pool ID directly export POOL_ID=$(aws cognito-idp create-user-pool \ --pool-name "MyUserPool" \ --policies '{"PasswordPolicy":{"MinimumLength":8}}' \ --region us-east-1 | jq -r '.UserPool.Id') # Create App Client and capture Client ID directly export CLIENT_ID=$(aws cognito-idp create-user-pool-client \ --user-pool-id $POOL_ID \ --client-name "MyClient" \ --no-generate-secret \ --explicit-auth-flows "ALLOW_USER_PASSWORD_AUTH" "ALLOW_REFRESH_TOKEN_AUTH" \ --region us-east-1 | jq -r '.UserPoolClient.ClientId') # Create User aws cognito-idp admin-create-user \ --user-pool-id $POOL_ID \ --username "testuser" \ --temporary-password "${temp-password}" \ --region us-east-1 \ --message-action SUPPRESS > /dev/null # Set Permanent Password aws cognito-idp admin-set-user-password \ --user-pool-id $POOL_ID \ --username "testuser" \ --password "${permanent-user-password}" \ --region us-east-1 \ --permanent > /dev/null # Authenticate User and capture Access Token export BEARER_TOKEN=$(aws cognito-idp initiate-auth \ --client-id "$CLIENT_ID" \ --auth-flow USER_PASSWORD_AUTH \ --auth-parameters USERNAME='testuser',PASSWORD='${permanent-user-password}' \ --region us-east-1 | jq -r '.AuthenticationResult.AccessToken') # Output the required values echo "Pool id: $POOL_ID" echo "Discovery URL: https://cognito-idp.us-east-1.amazonaws.com/$POOL_ID/.well-known/openid-configuration" echo "Client ID: $CLIENT_ID" echo "Bearer Token: $BEARER_TOKEN" -
Führen Sie das Skript aus, um die Cognito-Ressourcen zu erstellen:
source setup_cognito.sh -
Notieren Sie die Ausgabewerte, die etwa wie folgt aussehen werden:
Pool id: us-east-1_poolid Discovery URL: https://cognito-idp.us-east-1.amazonaws.com/us-east-1_userpoolid/.well-known/openid-configuration Client ID: clientid Bearer Token: bearertokenSie benötigen diese Werte in den nächsten Schritten.
Verwenden Sie das folgende Verfahren, um einen Cognito-Benutzerpool als eingehenden Identitätsanbieter für die Machine-to-Machine-Authentifizierung mit Gateway zu erstellen. AgentCore Mit den folgenden Schritten werden ein Benutzerpool, ein Ressourcenserver, Client-Anmeldeinformationen und eine Discovery-URL-Konfiguration erstellt. Dieses Setup ermöglicht M2M-Authentifizierungsabläufe für den Gateway-Zugriff.
So erstellen Sie einen Cognito-Benutzerpool als eingehenden Identitätsanbieter für die Gateway-Authentifizierung
-
Erstellen Sie einen Benutzerpool:
aws cognito-idp create-user-pool \ --region us-west-2 \ --pool-name "gateway-user-pool" -
Notieren Sie die Benutzerpool-ID aus der Antwort oder rufen Sie sie ab mit:
aws cognito-idp list-user-pools \ --region us-west-2 \ --max-results 60 -
Erstellen Sie einen Ressourcenserver für den Benutzerpool:
aws cognito-idp create-resource-server \ --region us-west-2 \ --user-pool-id <UserPoolId> \ --identifier "gateway-resource-server" \ --name "GatewayResourceServer" \ --scopes '[{"ScopeName":"read","ScopeDescription":"Read access"}, {"ScopeName":"write","ScopeDescription":"Write access"}]' -
Erstellen Sie einen Client für den Benutzerpool:
aws cognito-idp create-user-pool-client \ --region us-west-2 \ --user-pool-id <UserPoolId> \ --client-name "gateway-client" \ --generate-secret \ --allowed-o-auth-flows client_credentials \ --allowed-o-auth-scopes "gateway-resource-server/read" "gateway-resource-server/write" \ --allowed-o-auth-flows-user-pool-client \ --supported-identity-providers "COGNITO"Notieren Sie sich die Client-ID und das Client-Geheimnis aus der Antwort. Sie benötigen diese Werte, um den Cognito-Anbieter in AgentCore Identity zu konfigurieren.
-
Erstellen Sie bei Bedarf eine Domain für Ihren Benutzerpool:
aws cognito-idp create-user-pool-domain \ --domain <UserPoolIdWithoutUnderscore> \ --user-pool-id <UserPoolId> \ --region us-west-2Anmerkung
Entfernen Sie
UserPoolIdbeim Erstellen der Domain alle Unterstriche aus dem. Wenn Ihre Benutzerpool-ID beispielsweise „US-West-2_GMSGKKGR9" lautet, verwenden Sie „US-West-2GMSGKKGR9" als Domäne. -
Konstruieren Sie die Discovery-URL für Ihren Cognito-Benutzerpool:
https://cognito-idp.us-west-2.amazonaws.com/<UserPoolId>/.well-known/openid-configuration -
Konfigurieren Sie Gateway Inbound Auth mit den folgenden Werten:
-
Discovery-URL: Die im vorherigen Schritt erstellte URL
-
Zulässige Clients: Die Client-ID, die beim Erstellen des Benutzerpool-Clients abgerufen wurde
-
Ausgehend
Anmerkung
AgentCore Identity gibt für jeden Anmeldeinformationsanbieter, den Sie erstellen, eine eindeutige OAuth2-Callback-URL aus. Die eindeutige Callback-URL ermöglicht die Sitzungsbindung, wodurch der Austausch von OAuth2-Autorisierungscodes vor anbieterübergreifender Wiedergabe und CSRF-style Angriffen geschützt wird, indem sichergestellt wird, dass eine Autorisierungsantwort nur gegen den spezifischen Anmeldeinformationsanbieter eingelöst werden kann, der sie initiiert hat. Da die URL pro Anbieter einzigartig ist, erfahren Sie sie erst nach Ihrem Anruf. CreateOauth2CredentialProvider Erstellen Sie zuerst Ihren Cognito-Benutzerpool-App-Client und kehren Sie dann zur Amazon Cognito Cognito-Konsole zurück, um die Callback-URL zu registrieren, sobald AgentCore Identity sie ausgegeben hat.
Schritt 1: Erstellen Sie den Cognito-Benutzerpool-App-Client
Gehen Sie wie folgt vor, um einen Cognito-Benutzerpool-App-Client für den ausgehenden OAuth2-Verbund einzurichten. Sie registrieren die Umleitungs-URI in Schritt 3, nachdem AgentCore Identity die eindeutige Rückruf-URL ausgegeben hat.
So konfigurieren Sie einen Cognito-Benutzerpool-App-Client
-
Öffnen oder erstellen Sie in der Amazon Cognito Cognito-Konsole den Benutzerpool, den Sie als Anbieter für ausgehende Ressourcen verwenden möchten.
-
Konfigurieren Sie eine Benutzerpool-Domain, sodass die gehostete Benutzeroberfläche Autorisierungscodes ausgeben kann.
-
Erstellen Sie einen App-Client für den Benutzerpool, generieren Sie einen geheimen Clientschlüssel und aktivieren Sie den OAuth2-Fluss zur Gewährung von Autorisierungscodes.
-
Wählen Sie die OAuth2-Bereiche aus, die Ihre Anwendung benötigt.
-
Lassen Sie das Feld Zulässige Callback-URLs vorerst leer. In Schritt 3 fügen Sie die eindeutige Rückruf-URL hinzu.
-
Notieren Sie sich die Client-ID und das Client-Geheimnis. Sie benötigen diese Werte, um den Cognito-Anbieter in AgentCore Identity zu konfigurieren.
-
Notieren Sie sich das Domain-Präfix und die Benutzerpool-ID Ihres Benutzerpools. Sie verwenden diese, um die Autorisierungs-, Token- und Aussteller-Endpunkte in Schritt 2 zu erstellen.
Weitere Informationen finden Sie unter App-Client konfigurieren im Amazon Cognito Developer Guide.
Schritt 2: Erstellen Sie den AgentCore Identity-Anbieter für Anmeldeinformationen
Verwenden Sie die folgende Konfiguration, um Cognito-Benutzerpools als Anbieter für ausgehende Ressourcen zu konfigurieren:
{ "name": "Cognito", "credentialProviderVendor": "CognitoOauth2", "oauth2ProviderConfigInput" : { "includedOauth2ProviderConfig": { "clientId": "your-client-id", "clientSecret": "your-client-secret", "authorizationEndpoint": "https://{your-cognito-domain}.auth.us-east-1.amazoncognito.com/oauth2/authorize", "tokenEndpoint": "https://{your-cognito-domain}.auth.us-east-1.amazoncognito.com/oauth2/token", "issuer": "https://cognito-idp.us-east-1.amazonaws.com/{your-user-pool-id}" } } }
Die CreateOauth2CredentialProviderAntwort enthält ein callbackUrl Feld. Diese URL ist für diesen Anmeldeinformationsanbieter einzigartig und sieht wie folgt aus:https://bedrock-agentcore.us-east-1.amazonaws.com/identities/oauth2/callback/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Speichern Sie diesen Wert für den nächsten Schritt.
Schritt 3: Registrieren Sie die eindeutige Callback-URL bei Cognito
Kehren Sie zur Amazon Cognito Cognito-Konsole zurück und fügen Sie die eindeutige Callback-URL zu den erlaubten Rückrufen Ihres App-Clients hinzu.
-
Öffnen Sie in der Amazon Cognito Cognito-Konsole den Benutzerpool-App-Client, den Sie in Schritt 1 erstellt haben.
-
Fügen Sie in der Konfiguration der gehosteten Benutzeroberfläche des App-Clients den von zurückgegebenen
callbackUrlWertCreateOauth2CredentialProviderzu Zulässige Callback-URLs hinzu. -
Speichern Sie Ihre Änderungen.