View a markdown version of this page

Amazon Cognito - Base da Amazônia AgentCore

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Amazon Cognito

O Amazon Cognito pode ser configurado como um provedor de identidade para acessar o AgentCore Gateway and Runtime, ou um provedor de credenciais de AgentCore identidade para acesso externo a recursos. Isso permite que seus agentes autentiquem e autorizem usuários agentes 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 a partir 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 do token.

  • Insira o token válido clientId ou aud reivindicações. 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 um provedor de identidade de entrada para autenticação de usuários com AgentCore o Runtime. As etapas a seguir criarão um grupo de usuários do Cognito, um cliente do grupo de usuários, adicionarão um usuário e gerarão um token portador para o usuário. O token é válido por 60 minutos por padrão.

Para criar um grupo de usuários do Cognito como provedor de identidade de entrada para autenticação em tempo de execução

  1. Crie um arquivo chamado setup_cognito.sh com 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"
  2. Execute o script para criar os recursos do Cognito:

    source setup_cognito.sh
  3. 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: bearertoken

    Você 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 do 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 um provedor de identidade de entrada para autenticação do Gateway

  1. Crie um grupo de usuários:

    aws cognito-idp create-user-pool \ --region us-west-2 \ --pool-name "gateway-user-pool"
  2. 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
  3. 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"}]'
  4. 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 a ID do cliente e o segredo do cliente da resposta. Você precisará desses valores para configurar o provedor Cognito no AgentCore Identity.

  5. 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-2
    nota

    Remova qualquer sublinhado do UserPoolId ao 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.

  6. 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
  7. Configure o Gateway Inbound Auth com os seguintes valores:

    1. URL de descoberta: a URL construída na etapa anterior

    2. Clientes permitidos: o ID do cliente obtido ao criar o cliente do grupo de usuários

Saída

nota

AgentCore O Identity emite um URL exclusivo de retorno de chamada do OAuth2 para cada provedor de credenciais que você cria. O URL exclusivo de retorno de chamada permite a vinculação de sessão, o que protege a troca de 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ê só saberá depois de ligarCreateOauth2CredentialProvider. Crie primeiro seu cliente de aplicativo de grupo de usuários do Cognito e, em seguida, retorne ao console do Amazon Cognito para registrar a URL de retorno de chamada assim que a AgentCore Identity a emitir.

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 grupo de usuários do Cognito para federação externa do OAuth2. Você registrará o URI de redirecionamento na Etapa 3, depois que o AgentCore Identity emitir o URL exclusivo de retorno de chamada.

Para configurar um cliente de aplicativo de pool de usuários do Cognito

  1. No console do Amazon Cognito, abra ou crie o grupo de usuários que você deseja usar como provedor de recursos externos.

  2. Configure um domínio de grupo de usuários para que a interface hospedada possa emitir códigos de autorização.

  3. Crie um cliente de aplicativo para o grupo de usuários, gere um segredo de cliente e ative o fluxo OAuth2 de concessão de código de autorização.

  4. Selecione os escopos do OAuth2 que seu aplicativo exige.

  5. Deixe o campo URLs de retorno de chamada permitidos vazio por enquanto — você adicionará o URL exclusivo de retorno de chamada na Etapa 3.

  6. Registre a ID do cliente e o segredo do cliente. Você precisará desses valores para configurar o provedor Cognito no AgentCore Identity.

  7. Anote o prefixo de domínio e o ID do grupo de usuários 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 CreateOauth2CredentialProvider resposta inclui um callbackUrl campo. Esse URL é exclusivo para esse 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: registre o URL exclusivo de retorno de chamada com o Cognito

Retorne ao console do Amazon Cognito e adicione o URL exclusivo de retorno de chamada aos retornos de chamada permitidos do seu cliente de aplicativo.

  1. No console do Amazon Cognito, abra o cliente do aplicativo de grupo de usuários que você criou na Etapa 1.

  2. Na configuração da interface de usuário hospedada do cliente do aplicativo, adicione o callbackUrl valor retornado por CreateOauth2CredentialProvider às URLs de retorno de chamada permitidas.

  3. Salve as alterações.