View a markdown version of this page

Amazon Cognito - Base rocheuse de l'Amazonie AgentCore

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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'informations d' AgentCore identification pour l'accès aux ressources sortantes. Cela permet à vos agents d'authentifier et d'autoriser les utilisateurs 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 à vos clés de vérification des jetons.

  • Entrez des informations valides clientId ou aud réclamées pour le jeton. Cela permet de valider les jetons provenant de votre IDP et de permettre l'accès aux jetons contenant les réclamations attendues.

Suivez 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 AgentCore Runtime. Les étapes suivantes vont créer un groupe d'utilisateurs Cognito, un client de groupe d'utilisateurs, ajouter un utilisateur et générer un jeton porteur pour cet 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 selon les 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 pour les prochaines étapes.

Suivez 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 permettent de créer un groupe 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 à partir de 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 code secret du client à partir de 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 codes d'autorisation OAuth2 contre les rediffusions et les CSRF-style attaques entre fournisseurs en garantissant qu'une réponse d'autorisation ne peut être utilisé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 la connaîtrez qu'après avoir appeléCreateOauth2CredentialProvider. Créez d'abord le client de votre application de groupe d'utilisateurs Cognito, puis revenez à la console Amazon Cognito pour enregistrer l'URL de rappel une fois qu' AgentCore Identity l'a émise.

Étape 1 : créer le client de l'application Cognito user pool

Suivez 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 de code d'autorisation.

  4. Sélectionnez les domaines d'application OAuth2 dont votre application a besoin.

  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 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 Configuration d'un client d'application dans le manuel Amazon Cognito Developer Guide.

Étape 2 : Création du fournisseur AgentCore d'informations d'identification

Pour configurer les groupes d'utilisateurs 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 CreateOauth2CredentialProvider réponse comprend 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 auprès de Cognito

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

  1. Dans la console Amazon Cognito, ouvrez le client d'application du pool 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.