Configurar provedor de credenciais
Os provedores de credenciais de recursos no AgentCore Identity atuam como intermediários inteligentes que gerenciam os relacionamentos complexos entre agentes, provedores de identidade e servidores de recursos. Cada provedor encapsula a configuração específica do endpoint necessária para um determinado serviço ou sistema de identidade. O serviço fornece provedores integrados para serviços populares, incluindo Google, GitHub Slack e Salesforce, com endpoints de servidor de autorização e parâmetros específicos do provedor pré-configurados para reduzir o esforço de desenvolvimento. AgentCore O Identity oferece suporte a configurações personalizadas por meio de provedores de credenciais OAuth2 configuráveis que podem ser personalizados para funcionar com qualquer servidor de recursos. OAuth2-compatible Para obter informações sobre os limites do provedor de credenciais do OAuth2, consulte Identity Service AgentCore Quotas.
Os provedores de credenciais de recursos se integram profundamente ao cofre de tokens para fornecer gerenciamento contínuo do ciclo de vida das credenciais. Quando um agente solicita acesso a um recurso, o provedor gerencia o fluxo de autenticação, armazena as credenciais resultantes no cofre de tokens e fornece ao agente os tokens de acesso necessários.
Criação de um provedor de credenciais OAuth 2.0
As configurações do provedor no AgentCore Identity definem os parâmetros básicos necessários para o gerenciamento de credenciais com diferentes recursos e sistemas de autenticação.
Se você estiver usando a AgentCore CLI, poderá criar um provedor de credenciais do OAuth 2.0 com o comando: agentcore add credential
agentcore add credential --type oauth \
--name github-provider \
--discovery-url https://your-idp/.well-known/openid-configuration \
--client-id your-github-client-id \
--client-secret your-github-client-secret \
--scopes repo,user
A CLI armazena a configuração da credencial agentcore/agentcore.json e salva valores confidenciais (ID do cliente e segredo do cliente). agentcore/.env.local
Como alternativa, você pode trazer seu próprio segredo fornecendo uma referência a um segredo do cliente já armazenado no AWS Secrets Manager:
aws bedrock-agentcore-control create-oauth2-credential-provider \
--name "github-provider" \
--credential-provider-vendor "GithubOauth2" \
--oauth2-provider-config-input '{
"githubOauth2ProviderConfig": {
"clientId": "your-github-client-id",
"clientSecretSource": "EXTERNAL",
"clientSecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret",
"jsonKey": "clientSecret"
}
}
}' \
--region us-east-1
Como alternativa, você pode usar o AgentCore SDK para configurar programaticamente um provedor de credenciais do OAuth 2.0. O exemplo a seguir configura um provedor para GitHub.
from bedrock_agentcore.services.identity import IdentityClient
identity_client = IdentityClient("us-east-1")
github_provider = identity_client.create_oauth2_credential_provider({
"name": "github-provider",
"credentialProviderVendor": "GithubOauth2",
"oauth2ProviderConfigInput": {
"githubOauth2ProviderConfig": {
"clientId": "your-github-client-id",
"clientSecret": "your-github-client-secret"
}
}
})
Para configurar a troca de tokens em nome de (OBO) em um provedor de credenciais OAuth 2.0, adicione um à configuração do provedor. onBehalfOfTokenExchangeConfig Para modos, parâmetros e exemplos compatíveis, consulte troca de On-behalf-of tokens.
Criação de um provedor de credenciais de chave de API
Para serviços que usam chaves de API para autenticação em vez de OAuth, o AgentCore Identity armazenará e recuperará as chaves de seus agentes com segurança. Para obter informações sobre os limites do provedor de credenciais de chave de API, consulte AgentCore Identity Service Quotas.
Se você estiver usando a AgentCore CLI, poderá armazenar uma chave de API com um único comando:
agentcore add credential --name your-service-name --api-key your-api-key
Como alternativa, você pode trazer seu próprio segredo fornecendo uma referência a uma chave de API já armazenada no AWS Secrets Manager:
aws bedrock-agentcore-control create-api-key-credential-provider \
--name "your-service-name" \
--api-key-secret-source EXTERNAL \
--api-key-secret-config secretId=arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret,jsonKey=api_key \
--region us-east-1
Como alternativa, você pode usar o AgentCore SDK para armazenar uma chave de API programaticamente:
from bedrock_agentcore.services.identity import IdentityClient
identity_client= IdentityClient("us-east-1")
apikey_provider= identity_client.create_api_key_credential_provider({
"name": "your-service-name",
"apiKey": "your-api-key"
})
Criação de um provedor de credenciais de pagamento
Para serviços que usam credenciais de processador de pagamento, como Coinbase CDP ou Stripe Privy, o AgentCore Identity armazena com segurança as chaves de API, segredos de aplicativos e segredos associados no Secrets Manager e exibe somente seus ARNs para wallet/authorization seus agentes. Para obter informações sobre os limites do provedor de credenciais de pagamento, consulte Quotas de Serviços de AgentCore Identidade.
Atualmente, os provedores de credenciais de pagamento oferecem suporte a dois fornecedores: e. CoinbaseCDP StripePrivy Forneça exatamente um bloco de configuração abaixo providerConfigurationInput que corresponda ao que credentialProviderVendor você escolher. Como alternativa, você pode trazer seu próprio segredo fornecendo uma referência a um segredo já armazenado no AWS Secrets Manager.
exemplo
- AWS CLI
-
O exemplo a seguir cria um provedor de credenciais de pagamento para o Coinbase CDP:
aws bedrock-agentcore-control create-payment-credential-provider \
--name "coinbase-provider" \
--credential-provider-vendor CoinbaseCDP \
--provider-configuration-input '{
"coinbaseCdpConfiguration": {
"apiKeyId": "your-coinbase-api-key-id",
"apiKeySecret": "your-coinbase-api-key-secret",
"walletSecret": "your-coinbase-wallet-secret"
}
}' \
--region us-east-1
O exemplo a seguir cria um provedor de credenciais de pagamento Coinbase CDP com segredos armazenados no Secrets Manager AWS :
aws bedrock-agentcore-control create-payment-credential-provider \
--name "coinbase-provider" \
--credential-provider-vendor "CoinbaseCDP" \
--provider-configuration-input '{
"coinbaseCdpConfiguration": {
"apiKeyId": "your-coinbase-api-key-id",
"apiKeySecretSource": "EXTERNAL",
"apiKeySecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-api-secret",
"jsonKey": "apiKeySecret"
},
"walletSecretSource": "EXTERNAL",
"walletSecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-wallet-secret",
"jsonKey": "walletSecret"
}
}
}' \
--region us-east-1
O exemplo a seguir cria um provedor de credenciais de pagamento para o Stripe Privy:
aws bedrock-agentcore-control create-payment-credential-provider \
--name "stripe-privy-provider" \
--credential-provider-vendor StripePrivy \
--provider-configuration-input '{
"stripePrivyConfiguration": {
"appId": "your-stripe-privy-app-id",
"appSecret": "your-stripe-privy-app-secret",
"authorizationPrivateKey": "your-stripe-privy-authorization-private-key",
"authorizationId": "your-stripe-privy-authorization-id"
}
}' \
--region us-east-1
O exemplo a seguir cria um provedor de credenciais de pagamento Stripe Privy com segredos armazenados no Secrets Manager AWS :
aws bedrock-agentcore-control create-payment-credential-provider \
--name "stripe-privy-provider" \
--credential-provider-vendor "StripePrivy" \
--provider-configuration-input '{
"stripePrivyConfiguration": {
"appId": "your-stripe-privy-app-id",
"appSecretSource": "EXTERNAL",
"appSecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-app-secret",
"jsonKey": "appSecret"
},
"authorizationPrivateKeySource": "EXTERNAL",
"authorizationPrivateKeyConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-auth-key-secret",
"jsonKey": "authorizationPrivateKey"
},
"authorizationId": "your-stripe-privy-authorization-id"
}
}' \
--region us-east-1
- AWS SDK
-
O exemplo a seguir configura um provedor para o Coinbase CDP:
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-east-1")
coinbase_provider = client.create_payment_credential_provider(
name="coinbase-provider",
credentialProviderVendor="CoinbaseCDP",
providerConfigurationInput={
"coinbaseCdpConfiguration": {
"apiKeyId": "your-coinbase-api-key-id",
"apiKeySecret": "your-coinbase-api-key-secret",
"walletSecret": "your-coinbase-wallet-secret"
}
}
)
O exemplo a seguir configura um provedor de CDP da Coinbase com segredos armazenados no Secrets Manager AWS :
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-east-1")
coinbase_provider = client.create_payment_credential_provider(
name="coinbase-provider",
credentialProviderVendor="CoinbaseCDP",
providerConfigurationInput={
"coinbaseCdpConfiguration": {
"apiKeyId": "your-coinbase-api-key-id",
"apiKeySecretSource": "EXTERNAL",
"apiKeySecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-api-secret",
"jsonKey": "apiKeySecret"
},
"walletSecretSource": "EXTERNAL",
"walletSecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-wallet-secret",
"jsonKey": "walletSecret"
}
}
}
)
O exemplo a seguir configura um provedor para o Stripe Privy:
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-east-1")
stripe_privy_provider = client.create_payment_credential_provider(
name="stripe-privy-provider",
credentialProviderVendor="StripePrivy",
providerConfigurationInput={
"stripePrivyConfiguration": {
"appId": "your-stripe-privy-app-id",
"appSecret": "your-stripe-privy-app-secret",
"authorizationPrivateKey": "your-stripe-privy-authorization-private-key",
"authorizationId": "your-stripe-privy-authorization-id"
}
}
)
O exemplo a seguir configura um provedor Stripe Privy com segredos armazenados no Secrets Manager AWS :
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-east-1")
stripe_privy_provider = client.create_payment_credential_provider(
name="stripe-privy-provider",
credentialProviderVendor="StripePrivy",
providerConfigurationInput={
"stripePrivyConfiguration": {
"appId": "your-stripe-privy-app-id",
"appSecretSource": "EXTERNAL",
"appSecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-app-secret",
"jsonKey": "appSecret"
},
"authorizationPrivateKeySource": "EXTERNAL",
"authorizationPrivateKeyConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-auth-key-secret",
"jsonKey": "authorizationPrivateKey"
},
"authorizationId": "your-stripe-privy-authorization-id"
}
}
)
- AgentCore SDK
-
O exemplo a seguir configura um provedor para o Coinbase CDP:
from bedrock_agentcore.services.identity import IdentityClient
identity_client = IdentityClient("us-east-1")
coinbase_provider = identity_client.create_payment_credential_provider(
name="coinbase-provider",
credential_provider_vendor="CoinbaseCDP",
provider_configuration_input={
"coinbaseCdpConfiguration": {
"apiKeyId": "your-coinbase-api-key-id",
"apiKeySecret": "your-coinbase-api-key-secret",
"walletSecret": "your-coinbase-wallet-secret"
}
}
)
O exemplo a seguir configura um provedor de CDP da Coinbase com segredos armazenados no Secrets Manager AWS :
from bedrock_agentcore.services.identity import IdentityClient
identity_client = IdentityClient("us-east-1")
coinbase_provider = identity_client.create_payment_credential_provider(
name="coinbase-provider",
credential_provider_vendor="CoinbaseCDP",
provider_configuration_input={
"coinbaseCdpConfiguration": {
"apiKeyId": "your-coinbase-api-key-id",
"apiKeySecretSource": "EXTERNAL",
"apiKeySecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-api-secret",
"jsonKey": "apiKeySecret"
},
"walletSecretSource": "EXTERNAL",
"walletSecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-wallet-secret",
"jsonKey": "walletSecret"
}
}
}
)
O exemplo a seguir configura um provedor para o Stripe Privy:
from bedrock_agentcore.services.identity import IdentityClient
identity_client = IdentityClient("us-east-1")
stripe_privy_provider = identity_client.create_payment_credential_provider(
name="stripe-privy-provider",
credential_provider_vendor="StripePrivy",
provider_configuration_input={
"stripePrivyConfiguration": {
"appId": "your-stripe-privy-app-id",
"appSecret": "your-stripe-privy-app-secret",
"authorizationPrivateKey": "your-stripe-privy-authorization-private-key",
"authorizationId": "your-stripe-privy-authorization-id"
}
}
)
O exemplo a seguir configura um provedor Stripe Privy com segredos armazenados no Secrets Manager AWS :
from bedrock_agentcore.services.identity import IdentityClient
identity_client = IdentityClient("us-east-1")
stripe_privy_provider = identity_client.create_payment_credential_provider(
name="stripe-privy-provider",
credential_provider_vendor="StripePrivy",
provider_configuration_input={
"stripePrivyConfiguration": {
"appId": "your-stripe-privy-app-id",
"appSecretSource": "EXTERNAL",
"appSecretConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-app-secret",
"jsonKey": "appSecret"
},
"authorizationPrivateKeySource": "EXTERNAL",
"authorizationPrivateKeyConfig": {
"secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-auth-key-secret",
"jsonKey": "authorizationPrivateKey"
},
"authorizationId": "your-stripe-privy-authorization-id"
}
}
)