Amazon Cognito
Amazon Cognito se puede configurar como un proveedor de identidad para acceder a AgentCore Gateway y Runtime, o como un proveedor de credenciales de AgentCore identidad para el acceso a los recursos salientes. Esto permite a sus agentes autenticar y autorizar a los usuarios de los agentes con Cognito como proveedor de identidad y servidor de autorización, o a sus agentes obtener credenciales para acceder a los recursos autorizados por Cognito.
Entrada
Para añadir Cognito como proveedor de identidad y servidor de autorización para acceder a AgentCore Gateway y Runtime, debe:
-
Configure la URL de detección desde su directorio de IDP. Esto ayuda a AgentCore Identity a obtener los metadatos relacionados con el servidor de autorización de OAuth y las claves de verificación del token.
-
Introduce el
clientIdtoken válido oaudreclamado. Esto ayuda a validar los tokens que provienen de tu IDP y permite el acceso a los tokens que contienen afirmaciones esperadas.
Utilice el siguiente procedimiento para crear un grupo de usuarios de Cognito como proveedor de identidad entrante para la autenticación de usuarios con Runtime. AgentCore Los siguientes pasos crearán un grupo de usuarios de Cognito, un cliente de grupo de usuarios, agregarán un usuario y generarán un token de portador para el usuario. De forma predeterminada, el token es válido durante 60 minutos.
Para crear un grupo de usuarios de Cognito como proveedor de identidades entrantes para la autenticación en tiempo de ejecución
-
Cree un archivo denominado
setup_cognito.shcon el siguiente contenido:nota
El siguiente script es solo un ejemplo. Debe personalizar la configuración del grupo de usuarios y las credenciales de usuario según sea necesario para su aplicación. No utilice este script directamente en entornos de producción.
#!/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" -
Ejecute el script para crear los recursos de Cognito:
source setup_cognito.sh -
Registre los valores de salida, que tendrán un aspecto similar al siguiente:
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: bearertokenNecesitarás estos valores en los siguientes pasos.
Utilice el siguiente procedimiento para crear un grupo de usuarios de Cognito como proveedor de identidad entrante para la autenticación de máquina a máquina con Gateway. AgentCore Los siguientes pasos crearán un grupo de usuarios, un servidor de recursos, credenciales de cliente y una configuración de URL de detección. Esta configuración habilita los flujos de autenticación M2M para el acceso a Gateway.
Para crear un grupo de usuarios de Cognito como proveedor de identidad entrante para la autenticación de Gateway
-
Cree un grupo de usuarios:
aws cognito-idp create-user-pool \ --region us-west-2 \ --pool-name "gateway-user-pool" -
Registre el ID del grupo de usuarios de la respuesta o recupérelo mediante:
aws cognito-idp list-user-pools \ --region us-west-2 \ --max-results 60 -
Cree un servidor de recursos para el grupo de usuarios:
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"}]' -
Cree un cliente para el grupo de usuarios:
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"Registre el ID y el secreto del cliente de la respuesta. Necesitará estos valores para configurar el proveedor de Cognito en AgentCore Identity.
-
Si es necesario, cree un dominio para su grupo de usuarios:
aws cognito-idp create-user-pool-domain \ --domain <UserPoolIdWithoutUnderscore> \ --user-pool-id <UserPoolId> \ --region us-west-2nota
Elimine cualquier subrayado de
UserPoolIdal crear el dominio. Por ejemplo, si el ID de su grupo de usuarios es «US-West-2_GMSGKKgr9", utilice «US-West-2GMSGKKgr9" como dominio. -
Cree la URL de descubrimiento para su grupo de usuarios de Cognito:
https://cognito-idp.us-west-2.amazonaws.com/<UserPoolId>/.well-known/openid-configuration -
Configure la autenticación entrante de Gateway con los siguientes valores:
-
URL de descubrimiento: la URL creada en el paso anterior
-
Clientes permitidos: el ID de cliente obtenido al crear el cliente del grupo de usuarios
-
Salida
nota
AgentCore Identity emite una URL de devolución de llamada de OAuth2 única para cada proveedor de credenciales que cree. La URL única de devolución de llamada permite vincular las sesiones, lo que protege el intercambio de códigos de autorización de OAuth2 contra la reproducción y los CSRF-style ataques entre proveedores, al garantizar que una respuesta de autorización solo se pueda canjear contra el proveedor de credenciales específico que la inició. Como la URL es única para cada proveedor, no la conocerás hasta que llames. CreateOauth2CredentialProvider Cree primero el cliente de la aplicación del grupo de usuarios de Cognito y, a continuación, vuelva a la consola de Amazon Cognito para registrar la URL de devolución de llamada AgentCore una vez que Identity la haya emitido.
Paso 1: Crear el cliente de la aplicación del grupo de usuarios de Cognito
Utilice el siguiente procedimiento para configurar un cliente de aplicación de grupo de usuarios de Cognito para la federación OAuth2 saliente. Registrará el URI de redireccionamiento en el paso 3, después de que AgentCore Identity emita la URL única de devolución de llamada.
Para configurar un cliente de aplicación de grupo de usuarios de Cognito
-
En la consola de Amazon Cognito, abra o cree el grupo de usuarios que desee utilizar como proveedor de recursos salientes.
-
Configure un dominio de grupo de usuarios para que la interfaz de usuario alojada pueda emitir códigos de autorización.
-
Cree un cliente de aplicación para el grupo de usuarios, genere un secreto de cliente y habilite el flujo OAuth2 de concesión de códigos de autorización.
-
Seleccione los ámbitos de OAuth2 que requiere su aplicación.
-
Deje vacío por ahora el campo URL de devolución de llamada permitidas; añadirá la URL de devolución de llamada única en el paso 3.
-
Registre el ID y el secreto del cliente. Necesitará estos valores para configurar el proveedor de Cognito en AgentCore Identity.
-
Anote el prefijo de dominio y el ID del grupo de usuarios. Los usará para crear los puntos finales de autorización, token y emisor en el paso 2.
Para obtener más información, consulte Configurar un cliente de aplicaciones en la Guía para desarrolladores de Amazon Cognito.
Paso 2: Cree el proveedor de credenciales AgentCore de identidad
Para configurar los grupos de usuarios de Cognito como proveedor de recursos salientes, utilice la siguiente configuración:
{ "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 CreateOauth2CredentialProviderrespuesta incluye un callbackUrl campo. Esta URL es exclusiva de este proveedor de credenciales y tiene el siguiente aspecto:https://bedrock-agentcore.us-east-1.amazonaws.com/identities/oauth2/callback/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Guarde este valor para el siguiente paso.
Paso 3: Registrar la URL única de devolución de llamada con Cognito
Regrese a la consola de Amazon Cognito y añada la URL única de devolución de llamada a las devoluciones de llamada permitidas por el cliente de la aplicación.
-
En la consola de Amazon Cognito, abra el cliente de aplicaciones del grupo de usuarios que creó en el paso 1.
-
En la configuración de la interfaz de usuario alojada del cliente de la aplicación, añada el
callbackUrlvalor devuelto porCreateOauth2CredentialProvidera las URL de devolución de llamadas permitidas. -
Guarde los cambios.