Amazon Cognito
O Amazon Cognito pode ser configurado como um provedor de identidade para acessar o AgentCore Gateway e o Runtime, ou um provedor de credenciais de AgentCore identidade para acesso externo a recursos. Isso permite que seus agentes autentiquem e autorizem usuários com o Cognito como provedor de identidade e servidor de autorização, ou que seus agentes obtenham credenciais para acessar recursos autorizados pelo Cognito.
Entrada
Para adicionar o Cognito como provedor de identidade e servidor de autorização para acessar o AgentCore Gateway e o Runtime, você deve:
-
Configure o URL de descoberta do seu diretório IDP. Isso ajuda o AgentCore Identity a obter os metadados relacionados ao seu servidor de autorização OAuth e às chaves de verificação de token.
-
Insira
audreivindicações válidasclientIdou válidas para o token. Isso ajuda a validar os tokens provenientes do seu IDP e permite o acesso a tokens que contêm as reivindicações esperadas.
Use o procedimento a seguir para criar um grupo de usuários do Cognito como provedor de identidade de entrada para autenticação de usuários com o Runtime. AgentCore As etapas a seguir criarão um grupo de usuários do Cognito, um cliente de grupo de usuários, adicionarão um usuário e gerarão um token de portador para o usuário. Por padrão, o token é válido por 60 minutos.
Para criar um grupo de usuários do Cognito como provedor de identidade de entrada para autenticação Runtime
-
Crie um arquivo chamado
setup_cognito.shcom o seguinte conteúdo:nota
O script a seguir serve apenas como exemplo. Você deve personalizar as configurações do grupo de usuários e as credenciais do usuário conforme necessário para seu aplicativo. Não use esse script diretamente em ambientes de produção.
#!/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" -
Execute o script para criar os recursos do Cognito:
source setup_cognito.sh -
Registre os valores de saída, que serão semelhantes 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: bearertokenVocê precisará desses valores nas próximas etapas.
Use o procedimento a seguir para criar um grupo de usuários do Cognito como provedor de identidade de entrada para autenticação máquina a máquina com o Gateway. AgentCore As etapas a seguir criarão um pool de usuários, servidor de recursos, credenciais de cliente e configuração de URL de descoberta. Essa configuração permite fluxos de autenticação M2M para acesso ao Gateway.
Para criar um grupo de usuários do Cognito como provedor de identidade de entrada para autenticação do Gateway
-
Crie um grupo de usuários:
aws cognito-idp create-user-pool \ --region us-west-2 \ --pool-name "gateway-user-pool" -
Registre o ID do grupo de usuários da resposta ou recupere-o usando:
aws cognito-idp list-user-pools \ --region us-west-2 \ --max-results 60 -
Crie um servidor de recursos para o grupo de usuários:
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"}]' -
Crie um cliente para o grupo de usuários:
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 o ID do cliente e o segredo do cliente na resposta. Você precisará desses valores para configurar o provedor Cognito no AgentCore Identity.
-
Se necessário, crie um domínio para seu grupo de usuários:
aws cognito-idp create-user-pool-domain \ --domain <UserPoolIdWithoutUnderscore> \ --user-pool-id <UserPoolId> \ --region us-west-2nota
Remova qualquer sublinhado do
UserPoolIdao criar o domínio. Por exemplo, se o ID do grupo de usuários for “US-West-2_GmsgKkgr9", use “US-West-2GmsgKkgr9" como domínio. -
Crie o URL de descoberta para seu grupo de usuários do Cognito:
https://cognito-idp.us-west-2.amazonaws.com/<UserPoolId>/.well-known/openid-configuration -
Configure o Gateway Inbound Auth com os seguintes valores:
-
URL de descoberta: o URL construído na etapa anterior
-
Clientes permitidos: o ID do cliente obtido ao criar o cliente do grupo de usuários
-
Saída
nota
AgentCore A identidade emite uma URL exclusiva de retorno de chamada do OAuth2 para cada provedor de credenciais que você cria. O URL de retorno de chamada exclusivo permite a vinculação de sessão, o que protege a troca do código de autorização do OAuth2 contra repetições e CSRF-style ataques entre provedores, garantindo que uma resposta de autorização só possa ser resgatada contra o provedor de credenciais específico que a iniciou. Como o URL é exclusivo por provedor, você não o saberá até depois de ligarCreateOauth2CredentialProvider. Crie primeiro seu cliente do aplicativo de pool de usuários do Cognito e, em seguida, retorne ao console do Amazon Cognito para registrar o URL de retorno de chamada AgentCore após a emissão do Identity.
Etapa 1: Criar o cliente do aplicativo de pool de usuários do Cognito
Use o procedimento a seguir para configurar um cliente de aplicativo de pool de usuários do Cognito para a federação OAuth2 de saída. Você registrará o URI de redirecionamento na Etapa 3, depois que o AgentCore Identity emitir o URL de retorno de chamada exclusivo.
Para configurar um cliente de aplicativo de pool de usuários do Cognito
-
No console do Amazon Cognito, abra ou crie o grupo de usuários que você deseja usar como provedor de recursos de saída.
-
Configure um domínio de grupo de usuários para que a interface hospedada possa emitir códigos de autorização.
-
Crie um cliente de aplicativo para o grupo de usuários, gere um segredo do cliente e ative o fluxo de concessão do código de autorização do OAuth2.
-
Selecione os escopos do OAuth2 que seu aplicativo exige.
-
Deixe o campo URLs de retorno de chamada permitidos vazio por enquanto — você adicionará o URL de retorno de chamada exclusivo na Etapa 3.
-
Registre o ID do cliente e o segredo do cliente. Você precisará desses valores para configurar o provedor Cognito no AgentCore Identity.
-
Anote o prefixo do domínio e o ID do grupo de usuários. Você os usará para criar os endpoints de autorização, token e emissor na Etapa 2.
Para obter mais detalhes, consulte Configurar um cliente de aplicativo no Guia do Desenvolvedor do Amazon Cognito.
Etapa 2: criar o provedor de credenciais de AgentCore identidade
Para configurar grupos de usuários do Cognito como um provedor de recursos de saída, use a seguinte configuração:
{ "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}" } } }
A CreateOauth2CredentialProviderresposta inclui um callbackUrl campo. Esse URL é exclusivo desse provedor de credenciais e se parece com:https://bedrock-agentcore.us-east-1.amazonaws.com/identities/oauth2/callback/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Salve esse valor para a próxima etapa.
Etapa 3: registrar o URL de retorno de chamada exclusivo com o Cognito
Retorne ao console do Amazon Cognito e adicione a URL de retorno de chamada exclusiva aos retornos de chamada permitidos pelo cliente do seu aplicativo.
-
No console do Amazon Cognito, abra o cliente do aplicativo do grupo de usuários que você criou na Etapa 1.
-
Na configuração da interface de usuário hospedada do cliente do aplicativo, adicione o
callbackUrlvalor retornado porCreateOauth2CredentialProvideraos URLs de retorno de chamada permitidos. -
Salve as alterações.