View a markdown version of this page

Amazon Cognito - Amazon Bedrock AgentCore

Amazon Cognito

Amazon Cognito peut être configuré en tant que fournisseur d'identité pour accéder à AgentCore Gateway et Runtime, ou en tant que fournisseur d'identifiants d' AgentCore identité pour l'accès aux ressources sortantes. Cela permet à vos agents d'authentifier et d'autoriser les utilisateurs de l'agent avec Cognito en tant que fournisseur d'identité et serveur d'autorisation, ou à vos agents d'obtenir des informations d'identification pour accéder aux ressources autorisées par Cognito.

Entrant

Pour ajouter Cognito en tant que fournisseur d'identité et serveur d'autorisation pour accéder à AgentCore Gateway et Runtime, vous devez :

  • Configurez l'URL de découverte à partir de votre répertoire IDP. Cela permet à AgentCore Identity d'obtenir les métadonnées relatives à votre serveur d'autorisation OAuth et aux clés de vérification des jetons.

  • Entrez un jeton valide clientId ou aud réclamé. Cela permet de valider les jetons provenant de votre IDP et d'autoriser l'accès aux jetons contenant les réclamations attendues.

Utilisez la procédure suivante pour créer un groupe d'utilisateurs Cognito en tant que fournisseur d'identité entrant pour l'authentification des utilisateurs avec Runtime. AgentCore Les étapes suivantes permettront de créer un groupe d'utilisateurs Cognito, un client de groupe d'utilisateurs, d'ajouter un utilisateur et de générer un jeton porteur pour l'utilisateur. Le jeton est valide pendant 60 minutes par défaut.

Pour créer un groupe d'utilisateurs Cognito en tant que fournisseur d'identité entrant pour l'authentification Runtime

  1. Créez un fichier nommé setup_cognito.sh avec le contenu suivant:

    Note

    Le script suivant n'est fourni qu'à titre d'exemple. Vous devez personnaliser les paramètres du groupe d'utilisateurs et les informations d'identification des utilisateurs en fonction des besoins de votre application. N'utilisez pas ce script directement dans les environnements de production.

    #!/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"
  2. Exécutez le script pour créer les ressources Cognito :

    source setup_cognito.sh
  3. Enregistrez les valeurs de sortie, qui ressembleront à :

    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: bearertoken

    Vous aurez besoin de ces valeurs dans les prochaines étapes.

Utilisez la procédure suivante pour créer un groupe d'utilisateurs Cognito en tant que fournisseur d'identité entrant pour l'authentification de machine à machine avec Gateway. AgentCore Les étapes suivantes créeront un pool d'utilisateurs, un serveur de ressources, des informations d'identification client et une configuration d'URL de découverte. Cette configuration active les flux d'authentification M2M pour l'accès à la passerelle.

Pour créer un groupe d'utilisateurs Cognito en tant que fournisseur d'identité entrant pour l'authentification Gateway

  1. Créez un groupe d'utilisateurs :

    aws cognito-idp create-user-pool \ --region us-west-2 \ --pool-name "gateway-user-pool"
  2. Enregistrez l'ID du groupe d'utilisateurs indiqué dans la réponse ou récupérez-le à l'aide de :

    aws cognito-idp list-user-pools \ --region us-west-2 \ --max-results 60
  3. Créez un serveur de ressources pour le groupe d'utilisateurs :

    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"}]'
  4. Créez un client pour le groupe d'utilisateurs :

    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"

    Enregistrez l'ID client et le secret du client contenus dans la réponse. Vous aurez besoin de ces valeurs pour configurer le fournisseur Cognito dans AgentCore Identity.

  5. Si nécessaire, créez un domaine pour votre groupe d'utilisateurs :

    aws cognito-idp create-user-pool-domain \ --domain <UserPoolIdWithoutUnderscore> \ --user-pool-id <UserPoolId> \ --region us-west-2
    Note

    Supprimez tout trait de soulignement UserPoolId lors de la création du domaine. Par exemple, si l'ID de votre groupe d'utilisateurs est « US-West-2_GMsgkkgr9 », utilisez « US-West-2gmsgkkgr9 » comme domaine.

  6. Créez l'URL de découverte pour votre groupe d'utilisateurs Cognito :

    https://cognito-idp.us-west-2.amazonaws.com/<UserPoolId>/.well-known/openid-configuration
  7. Configurez l'authentification entrante de la passerelle avec les valeurs suivantes :

    1. URL de découverte : URL créée à l'étape précédente

    2. Clients autorisés : ID client obtenu lors de la création du client du pool d'utilisateurs

Sortant

Note

AgentCore Identity émet une URL de rappel OAuth2 unique pour chaque fournisseur d'informations d'identification que vous créez. L'URL de rappel unique permet la liaison de session, ce qui protège l'échange de code d'autorisation OAuth2 contre les rediffusions et les CSRF-style attaques entre fournisseurs en garantissant qu'une réponse d'autorisation ne peut être échangée que contre le fournisseur d'informations d'identification spécifique qui l'a initiée. Comme l'URL est unique par fournisseur, vous ne le saurez qu'après avoir appeléCreateOauth2CredentialProvider. Créez d'abord le client de l'application Cognito User Pool, puis retournez sur la console Amazon Cognito pour enregistrer l'URL de rappel AgentCore une fois qu'Identity l'a émise.

Étape 1 : Création du client de l'application Cognito User Pool

Utilisez la procédure suivante pour configurer un client d'application de groupe d'utilisateurs Cognito pour la fédération OAuth2 sortante. Vous enregistrerez l'URI de redirection à l'étape 3, une fois qu' AgentCore Identity aura émis l'URL de rappel unique.

Pour configurer un client d'application de groupe d'utilisateurs Cognito

  1. Dans la console Amazon Cognito, ouvrez ou créez le groupe d'utilisateurs que vous souhaitez utiliser en tant que fournisseur de ressources sortantes.

  2. Configurez un domaine de groupe d'utilisateurs afin que l'interface utilisateur hébergée puisse émettre des codes d'autorisation.

  3. Créez un client d'application pour le groupe d'utilisateurs, générez un secret client et activez le flux OAuth2 d'octroi du code d'autorisation.

  4. Sélectionnez les étendues OAuth2 requises par votre application.

  5. Laissez le champ URL de rappel autorisées vide pour le moment. Vous ajouterez l'URL de rappel unique à l'étape 3.

  6. Enregistrez l'ID client et le secret du client. Vous aurez besoin de ces valeurs pour configurer le fournisseur Cognito dans AgentCore Identity.

  7. Notez le préfixe de domaine et l'ID du groupe d'utilisateurs de votre groupe d'utilisateurs. Vous les utiliserez pour créer les points de terminaison d'autorisation, de jeton et d'émetteur à l'étape 2.

Pour plus de détails, consultez la section Configurer un client d'application dans le manuel Amazon Cognito Developer Guide.

Étape 2 : créer le fournisseur AgentCore d'identifiants d'identité

Pour configurer les groupes d'utilisateurs de Cognito en tant que fournisseur de ressources sortantes, utilisez la configuration suivante :

{ "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}" } } }

La CreateOauth2CredentialProviderréponse inclut un callbackUrl champ. Cette URL est propre à ce fournisseur d'informations d'identification et ressemble à :https://bedrock-agentcore.us-east-1.amazonaws.com/identities/oauth2/callback/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Enregistrez cette valeur pour l'étape suivante.

Étape 3 : Enregistrez l'URL de rappel unique avec Cognito

Retournez à la console Amazon Cognito et ajoutez l'URL de rappel unique aux rappels autorisés de votre client d'application.

  1. Dans la console Amazon Cognito, ouvrez le client d'application du groupe d'utilisateurs que vous avez créé à l'étape 1.

  2. Dans la configuration de l'interface utilisateur hébergée du client de l'application, ajoutez la callbackUrl valeur renvoyée par CreateOauth2CredentialProvider aux URL de rappel autorisées.

  3. Enregistrez vos modifications.