Amazon Cognito
Amazon Cognito può essere configurato come provider di identità per l'accesso a AgentCore Gateway e Runtime o come provider di credenziali di AgentCore identità per l'accesso alle risorse in uscita. Ciò consente ai tuoi agenti di autenticare e autorizzare gli utenti agenti con Cognito come provider di identità e server di autorizzazione, oppure ai tuoi agenti di ottenere le credenziali per accedere alle risorse autorizzate da Cognito.
In entrata
Per aggiungere Cognito come provider di identità e server di autorizzazione per l'accesso a AgentCore Gateway e Runtime, devi:
-
Configura l'URL di rilevamento dalla tua directory IDP. Questo aiuta AgentCore Identity a ottenere i metadati relativi al server di autorizzazione OAuth e alle chiavi di verifica dei token.
-
Inserisci valori validi
clientIdoaudattestati per il token. Questo aiuta a convalidare i token provenienti dal tuo IDP e a consentire l'accesso ai token che contengono le dichiarazioni previste.
Utilizza la seguente procedura per creare un pool di utenti Cognito come provider di identità in entrata per l'autenticazione degli utenti con Runtime. AgentCore I seguenti passaggi creeranno un pool di utenti Cognito, un client per il pool di utenti, aggiungeranno un utente e genereranno un token bearer per l'utente. Per impostazione predefinita, il token è valido per 60 minuti.
Per creare un pool di utenti Cognito come provider di identità in entrata per l'autenticazione Runtime
-
Crea un file denominato
setup_cognito.shcon i seguenti contenuti:Nota
Lo script seguente è inteso solo come esempio. È necessario personalizzare le impostazioni del pool di utenti e le credenziali utente in base alle esigenze dell'applicazione. Non utilizzate questo script direttamente negli ambienti di produzione.
#!/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" -
Esegui lo script per creare le risorse Cognito:
source setup_cognito.sh -
Registra i valori di output, che saranno simili a:
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: bearertokenAvrai bisogno di questi valori nei passaggi successivi.
Utilizza la seguente procedura per creare un pool di utenti Cognito come provider di identità in entrata per l'autenticazione da macchina a macchina con Gateway. AgentCore I seguenti passaggi creeranno un pool di utenti, un server di risorse, credenziali client e una configurazione degli URL di rilevamento. Questa configurazione abilita i flussi di autenticazione M2M per l'accesso al gateway.
Per creare un pool di utenti Cognito come provider di identità in entrata per l'autenticazione Gateway
-
Crea un pool di utenti:
aws cognito-idp create-user-pool \ --region us-west-2 \ --pool-name "gateway-user-pool" -
Registra l'ID del pool di utenti dalla risposta o recuperalo utilizzando:
aws cognito-idp list-user-pools \ --region us-west-2 \ --max-results 60 -
Crea un server di risorse per il pool di utenti:
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"}]' -
Crea un client per il pool di utenti:
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"Registra l'ID del client e il segreto del client dalla risposta. Avrai bisogno di questi valori per configurare il provider Cognito in AgentCore Identity.
-
Se necessario, crea un dominio per il tuo pool di utenti:
aws cognito-idp create-user-pool-domain \ --domain <UserPoolIdWithoutUnderscore> \ --user-pool-id <UserPoolId> \ --region us-west-2Nota
Rimuovi qualsiasi carattere di sottolineatura da
UserPoolIdquando crei il dominio. Ad esempio, se l'ID del pool di utenti è «US-West-2_GMSGKKGR9", usa «US-West-2GMSGKKGR9" come dominio. -
Crea l'URL di scoperta per il tuo pool di utenti di Cognito:
https://cognito-idp.us-west-2.amazonaws.com/<UserPoolId>/.well-known/openid-configuration -
Configura il Gateway Inbound Auth con i seguenti valori:
-
Discovery URL: l'URL creato nel passaggio precedente
-
Client consentiti: l'ID client ottenuto durante la creazione del client del pool di utenti
-
In uscita
Nota
AgentCore Identity emette un URL di callback OAuth2 univoco per ogni provider di credenziali creato. L'URL di callback univoco abilita l'associazione di sessione, che protegge lo scambio di codice di autorizzazione OAuth2 dalla riproduzione e dagli CSRF-style attacchi tra provider, garantendo che una risposta di autorizzazione possa essere riscattata solo contro lo specifico provider di credenziali che l'ha avviata. Poiché l'URL è unico per provider, lo saprai solo dopo la chiamata. CreateOauth2CredentialProvider Crea prima il client dell'app del pool di utenti Cognito, quindi torna alla console Amazon Cognito per registrare l'URL di callback AgentCore una volta che Identity lo ha emesso.
Fase 1: Creare il client dell'app del pool di utenti Cognito
Utilizza la seguente procedura per configurare un client di app con pool di utenti Cognito per la federazione OAuth2 in uscita. Registrerai l'URI di reindirizzamento nella Fase 3, dopo che AgentCore Identity avrà emesso l'URL di callback univoco.
Per configurare un client di app per pool di utenti Cognito
-
Nella console Amazon Cognito, apri o crea il pool di utenti che desideri utilizzare come provider di risorse in uscita.
-
Configura un dominio del pool di utenti in modo che l'interfaccia utente ospitata possa emettere codici di autorizzazione.
-
Crea un client di app per il pool di utenti, genera un client secret e abilita il flusso OAuth2 di concessione del codice di autorizzazione.
-
Seleziona gli ambiti OAuth2 richiesti dalla tua applicazione.
-
Lascia vuoto il campo URL di callback consentiti per ora: aggiungerai l'URL di callback univoco nel passaggio 3.
-
Registra l'ID cliente e il segreto del cliente. Avrai bisogno di questi valori per configurare il provider Cognito in AgentCore Identity.
-
Annota il prefisso di dominio e l'ID del pool di utenti del pool di utenti. Li utilizzerai per creare gli endpoint di autorizzazione, token e emittente nella Fase 2.
Per ulteriori dettagli, consulta Configurare un client di app nella Amazon Cognito Developer Guide.
Passaggio 2: creare il provider di credenziali di AgentCore identità
Per configurare i pool di utenti di Cognito come provider di risorse in uscita, utilizza la seguente configurazione:
{ "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 CreateOauth2CredentialProviderrisposta include un callbackUrl campo. Questo URL è unico per questo fornitore di credenziali e ha il seguente aspetto:https://bedrock-agentcore.us-east-1.amazonaws.com/identities/oauth2/callback/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Salva questo valore per il passaggio successivo.
Fase 3: Registrare l'URL di callback univoco con Cognito
Torna alla console Amazon Cognito e aggiungi l'URL di callback univoco ai callback consentiti dal client dell'app.
-
Nella console Amazon Cognito, apri il client dell'app del pool di utenti che hai creato nel passaggio 1.
-
Nella configurazione dell'interfaccia utente ospitata dal client dell'app, aggiungi il
callbackUrlvalore restituito daCreateOauth2CredentialProvideragli URL di callback consentiti. -
Salvare le modifiche.