

# Conecte-se a provedores de identidade privada
<a name="identity-private-idp"></a>

O Amazon Bedrock AgentCore Identity oferece suporte à conexão com provedores de identidade OAuth 2.0 (IdPs) hospedados em sua AWS VPC, como o Keycloak auto-hospedado ou outros servidores de OIDC-compliant autorização PingFederate, sem expô-los à Internet pública. Isso permite que você use private IdPs para autorização JWT de entrada com AgentCore Runtime e AgentCore Gateway, bem como para provedores de credenciais OAuth2 de saída.

[A conectividade privada com a VPC hospedada IdPs é estabelecida usando gateways de recursos e configurações de recursos do Amazon [VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html), seguindo o mesmo padrão usado pelo Gateway VPC egress. AgentCore ](gateway-vpc-egress.md) AgentCore O Identity usa a função `AWSServiceRoleForBedrockAgentCoreIdentity` vinculada ao serviço para criar e gerenciar recursos do VPC Lattice em sua conta para conectividade privada com seus endpoints de IdP.

**Importante**  
AgentCore suporta dois modos de conectividade do VPC Lattice: o **gerenciado Lattice (mais simples, gerencia** o ciclo de vida dos recursos) e o **Lattice autogerenciado (avançado, AgentCore com suporte entre contas e visibilidade** total da governança). Cada modo tem diferentes vantagens e desvantagens em termos de complexidade, custo e controle. Para uma comparação detalhada dos prós e contras, consulte Modos de [saída de VPC compatíveis](vpc-egress-private-endpoints.md#lattice-vpc-egress-compare-modes).

## Casos de uso
<a name="private-idp-use-cases"></a>

Provedores de identidade privada são comuns em ambientes corporativos em que as organizações:
+ Execute servidores de autorização auto-hospedados em sua VPC para atender aos requisitos de conformidade ou residência de dados
+ Use endpoints de descoberta OIDC privados que não são acessíveis ao público
+ Exija que todo o tráfego de autenticação permaneça na AWS rede sem atravessar a Internet pública

## Autorização JWT de entrada com um IdP privado
<a name="private-idp-inbound-auth"></a>

Quando você configura a autorização JWT de entrada para AgentCore Runtime ou AgentCore Gateway, o autorizador usa a URL de descoberta para buscar as chaves públicas do IdP (JWKS) e validar os tokens JWT recebidos. Se seu IdP estiver hospedado em uma VPC e a URL de descoberta não estiver acessível ao público, você deverá configurar um endpoint privado para que o Identity AgentCore possa alcançar a descoberta do OIDC e os endpoints JWKS do IdP.

### Configurar a autorização de entrada com um IdP privado
<a name="private-idp-inbound-config"></a>

Para configurar a autorização de entrada do JWT com um IdP privado, inclua o `privateEndpoint` bloco na configuração do autorizador ao criar ou atualizar seu Runtime ou Gateway. AgentCore 

 **Exemplo: CreateAgentRuntime com IdP privado para autenticação de entrada** 

```
{
  "agentRuntimeName": "my-runtime",
  "authorizerConfiguration": {
    "customJWTAuthorizer": {
      "discoveryUrl": "https://idp.internal.example.com/.well-known/openid-configuration",
      "allowedAudiences": [
        "my-agent-audience"
      ],
      "allowedClients": [
        "my-client-id"
      ],
      "privateEndpoint": {
        "managedVpcResource": {
          "vpcIdentifier": "vpc-0abc123def456",
          "subnetIds": [
            "subnet-0abc123",
            "subnet-0def456"
          ],
          "endpointIpAddressType": "IPV4",
          "securityGroupIds": [
            "sg-0abc123def"
          ]
        }
      }
    }
  }
}
```

 **Exemplo: CreateGateway com IdP privado para autenticação de entrada** 

```
{
  "name": "my-gateway",
  "authorizerConfiguration": {
    "customJWTAuthorizer": {
      "discoveryUrl": "https://idp.internal.example.com/.well-known/openid-configuration",
      "allowedAudiences": [
        "my-gateway-audience"
      ],
      "allowedClients": [
        "my-client-id"
      ],
      "privateEndpoint": {
        "managedVpcResource": {
          "vpcIdentifier": "vpc-0abc123def456",
          "subnetIds": [
            "subnet-0abc123",
            "subnet-0def456"
          ],
          "endpointIpAddressType": "IPV4",
          "securityGroupIds": [
            "sg-0abc123def"
          ]
        }
      }
    }
  }
}
```

Se o seu IdP usa um certificado TLS emitido por uma autoridade de certificação privada, você pode colocar um Application Load Balancer interno com um certificado ACM público à sua frente. Para obter mais informações, consulte [Solução alternativa para certificados privados: ALB](vpc-egress-private-endpoints.md#lattice-vpc-egress-private-certs).

Para o Lattice autogerenciado, substitua por`managedVpcResource`: `selfManagedLatticeResource`

 **Exemplo: CreateAgentRuntime com Lattice autogerenciado para autenticação de entrada** 

```
{
  "agentRuntimeName": "my-runtime",
  "authorizerConfiguration": {
    "customJWTAuthorizer": {
      "discoveryUrl": "https://idp.internal.example.com/.well-known/openid-configuration",
      "allowedAudiences": [
        "my-agent-audience"
      ],
      "allowedClients": [
        "my-client-id"
      ],
      "privateEndpoint": {
        "selfManagedLatticeResource": {
          "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123"
        }
      }
    }
  }
}
```

 **Exemplo: CreateGateway com Lattice autogerenciado para autenticação de entrada** 

```
{
  "name": "my-gateway",
  "authorizerConfiguration": {
    "customJWTAuthorizer": {
      "discoveryUrl": "https://idp.internal.example.com/.well-known/openid-configuration",
      "allowedAudiences": [
        "my-gateway-audience"
      ],
      "allowedClients": [
        "my-client-id"
      ],
      "privateEndpoint": {
        "selfManagedLatticeResource": {
          "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123"
        }
      }
    }
  }
}
```

## Provedor de credenciais OAuth de saída com um IdP privado
<a name="private-idp-outbound-auth"></a>

Quando você configura um provedor de credenciais OAuth2 de saída que usa um IdP privado, o Identity AgentCore precisa alcançar o endpoint do token do IdP para trocar códigos de autorização por tokens de acesso ou realizar concessões de credenciais de clientes. Se o endpoint de token do IdP estiver hospedado em sua VPC, você deverá configurar um endpoint privado no provedor de credenciais.

### Configure o provedor de credenciais de saída com um IdP privado
<a name="private-idp-outbound-config"></a>

Para configurar um provedor de credenciais OAuth de saída com um IdP privado, inclua o `privateEndpoint` bloco ao criar o provedor de credenciais usando um provedor personalizado com configuração manual.

 **Exemplo: criar um provedor de credenciais OAuth com um IdP privado** 

```
{
  "name": "my-private-idp-provider",
  "credentialProviderType": "OAUTH",
  "oauthCredentialProvider": {
    "providerType": "CUSTOM",
    "customProviderConfiguration": {
      "issuer": "https://idp.internal.example.com/realms/my-realm",
      "authorizationEndpoint": "https://idp.internal.example.com/realms/my-realm/protocol/openid-connect/auth",
      "tokenEndpoint": "https://idp.internal.example.com/realms/my-realm/protocol/openid-connect/token"
    },
    "clientId": "my-client-id",
    "clientSecret": "my-client-secret",
    "privateEndpoint": {
      "managedVpcResource": {
        "vpcIdentifier": "vpc-0abc123def456",
        "subnetIds": [
          "subnet-0abc123",
          "subnet-0def456"
        ],
        "endpointIpAddressType": "IPV4",
        "securityGroupIds": [
          "sg-0abc123def"
        ]
      }
    }
  }
}
```

Para o Lattice autogerenciado, substitua por`managedVpcResource`: `selfManagedLatticeResource`

```
{
  "name": "my-private-idp-provider",
  "credentialProviderType": "OAUTH",
  "oauthCredentialProvider": {
    "providerType": "CUSTOM",
    "customProviderConfiguration": {
      "issuer": "https://idp.internal.example.com/realms/my-realm",
      "authorizationEndpoint": "https://idp.internal.example.com/realms/my-realm/protocol/openid-connect/auth",
      "tokenEndpoint": "https://idp.internal.example.com/realms/my-realm/protocol/openid-connect/token"
    },
    "clientId": "my-client-id",
    "clientSecret": "my-client-secret",
    "privateEndpoint": {
      "selfManagedLatticeResource": {
        "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123"
      }
    }
  }
}
```

## Pré-requisitos
<a name="private-idp-prerequisites"></a>

Antes de configurar um provedor de identidade privada, verifique o seguinte:
+ Seu provedor de identidade está em execução e pode ser acessado em sua VPC.
+ O endpoint de descoberta OIDC (`/.well-known/openid-configuration`), o endpoint JWKS e o endpoint de token do IdP podem ser acessados a partir das sub-redes especificadas.
+ Seus grupos de segurança permitem tráfego de entrada na porta usada pelo seu IdP (normalmente porta 443 para HTTPS).
+ Para o Lattice gerenciado, seu diretor do IAM deve ter a `iam:CreateServiceLinkedRole` permissão para AgentCore poder criar a função vinculada ao serviço Identity Network em seu nome. Para a política do IAM necessária, consulte Função [vinculada ao serviço da Identity Network](service-linked-roles.md#identity-network-service-linked-role).
+ Para o Managed Lattice, seu diretor do IAM também precisa da `ec2:CreateNetworkInterface` seguinte permissão do Amazon EC2.

## Service-linked função dos provedores de identidade privada
<a name="private-idp-slr"></a>

Quando você configura um endpoint privado para um provedor de AgentCore identidade, o Identity usa a função `AWSServiceRoleForBedrockAgentCoreIdentity` vinculada ao serviço para gerenciar a conectividade com seu IdP hospedado em VPC. Essa função é criada automaticamente na primeira vez que você configura um endpoint privado gerenciado para um provedor de identidade, desde que seu diretor do IAM tenha a `iam:CreateServiceLinkedRole` permissão necessária.

Para obter o documento de política completo e as instruções para criar, editar e excluir essa função, consulte Função [vinculada ao serviço da Identity Network](service-linked-roles.md#identity-network-service-linked-role).

## Limitações e considerações
<a name="private-idp-limitations"></a>
+  O **URL de descoberta deve ser HTTPS**: o URL de descoberta do OIDC do IdP deve usar HTTPS. Não há suporte para endpoints HTTP.
+  **Certificados privados**: seu IdP deve usar um certificado TLS publicamente confiável ou você deve colocar um ALB com um certificado ACM público na frente dele. Para obter mais informações, consulte [Solução alternativa para certificados privados: ALB](vpc-egress-private-endpoints.md#lattice-vpc-egress-private-certs).
+  **Cross-account**: a conectividade de IdP Cross-account privado requer a opção Lattice autogerenciada. O Managed Lattice não oferece suporte a cenários entre contas.

Para ver as limitações adicionais relacionadas à conectividade do VPC Lattice, consulte [Limitações e considerações](vpc-egress-private-endpoints.md#lattice-vpc-egress-limitations) em [Conecte-se a recursos privados em sua VPC usando o VPC Lattice](vpc-egress-private-endpoints.md).