Skip to main content

Identidad administrada de Azure con BYOK

El BYOK (traiga su propia clave) del SDK de GitHub Copilot admite claves de API estáticas, pero las implementaciones de Azure suelen usar identidad administrada (Microsoft Entra ID) en lugar de claves de larga duración. El SDK de GitHub Copilot está diseñado para integrarse con el SDK Azure Identity y ofrecer la máxima flexibilidad. Proporcione una devolución de llamada del proveedor de tokens de portador que pueda capturar tokens nuevos a petición mediante una API del SDK de identidad de Azure.

En esta guía se muestra cómo usar las API del SDK de Azure Identity para autenticarse con modelos de Microsoft Foundry a través del SDK de GitHub Copilot. La mayoría de los idiomas usan DefaultAzureCredential; Rust usa DeveloperToolsCredential localmente y ManagedIdentityCredential en Azure.

Cómo funciona

El punto de conexión compatible con OpenAI de Microsoft Foundry (https://<resource-name>.openai.azure.com/openai/v1/) acepta tokens de portador de Microsoft Entra ID en lugar de usar claves de API estáticas. Esta guía usa una función callback del proveedor de tokens para que el runtime del SDK de GitHub Copilot pueda solicitar tokens actualizados cuando sea necesario.

Con Python como ejemplo, el flujo es:

  1. Configura DefaultAzureCredential para tu entorno.
  2. Pase una devolución de llamada, en bearer_token_provider de la configuración del proveedor BYOK, que usa DefaultAzureCredential para obtener un token para el https://ai.azure.com/.default ámbito.
  3. Deje que el SDK de GitHub Copilot solicite nuevos tokens cuando sea necesario mediante esa función de callback.

Diagrama: diagrama de secuencia que muestra el proceso descrito.

Ejemplos de código

Prerequisites

Instale los paquetes Azure Identity y GitHub Copilot SDK para el idioma:

Lenguajes de código navigation

.NET
dotnet add package GitHub.Copilot.SDK
dotnet add package Azure.Core

Uso de una devolución de llamada del proveedor de tokens

Use este enfoque cuando desee que el entorno de ejecución del SDK de GitHub Copilot solicite tokens nuevos a petición a través de una devolución de llamada que proporcione. El SDK de Azure Identity controla el almacenamiento en caché de tokens y el tiempo de actualización.

Estas son implementaciones específicas del lenguaje:

Lenguajes de código navigation

.NET
using Azure.Core;
using Azure.Identity;
using GitHub.Copilot;

DefaultAzureCredential credential = new(
    DefaultAzureCredential.DefaultEnvironmentVariableName);
await using CopilotClient client = new();
string foundryUrl = Environment.GetEnvironmentVariable("FOUNDRY_RESOURCE_URL")!;

await using CopilotSession session = await client.CreateSessionAsync(new SessionConfig
{
    Model = "gpt-5.5",
    Provider = new ProviderConfig
    {
        Type = "openai",
        BaseUrl = $"{foundryUrl}/openai/v1/",
        BearerTokenProvider = async _ =>
        {
            AccessToken token = await credential.GetTokenAsync(
                new TokenRequestContext(["https://ai.azure.com/.default"]));
            return token.Token;
        },
        WireApi = "responses",
    },
});

AssistantMessageEvent? response = await session.SendAndWaitAsync(
    new MessageOptions { Prompt = "Hello from Managed Identity!" });
Console.WriteLine(response?.Data.Content);

Configuración de entorno

VariableDescriptionExample
AZURE_TOKEN_CREDENTIALSCuando se ejecute en Azure, configúrelo como ManagedIdentityCredential. Al ejecutar localmente, configúrelo como dev o como un nombre de credencial de una herramienta de desarrollo, como AzureCliCredential.ManagedIdentityCredential
AZURE_CLIENT_ID
Opcional. Cuando se ejecuta en Azure, establézcalo en el identificador de cliente de una identidad administrada asignada por el usuario al usar ManagedIdentityCredential. Si no se establece, Azure usa la identidad administrada asignada por el sistema.11111111-2222-3333-4444-555555555555
FOUNDRY_RESOURCE_URLDirección URL del recurso Microsoft Foundryhttps://<my-resource>.openai.azure.com

No se necesita ninguna variable de entorno de clave de API: la autenticación se controla mediante Azure credenciales de identidad. En .NET, Go, Java, Python y TypeScript, DefaultAzureCredential admite automáticamente:

  • Identidad administrada (asignada por el sistema o asignada por el usuario): para aplicaciones hospedadas Azure
  • CLI de Azure (az login): para el desarrollo local
  • Variables de entorno (AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET): para entidades de servicio
  • Identidad de carga de trabajo: para Kubernetes

En .NET, Go, Java, Python y TypeScript, ManagedIdentityCredential lee AZURE_CLIENT_ID para seleccionar una identidad administrada asignada por el usuario. Rust es una excepción en esta guía.

En Rust, use DeveloperToolsCredential para el desarrollo local y ManagedIdentityCredential cuando se ejecute en Azure. Para otros idiomas, consulte la documentación de la cadena completa de credenciales en DefaultAzureCredential:

Cuándo usar este patrón

EscenarioRecomendación
Aplicación hospedada en Azure con identidad administrada
✅ Usa este patrón
Aplicación con una entidad de servicio existente de Microsoft Entra
✅ Usa este patrón
Desarrollo local con az login
✅ Usa este patrón
Entorno que no es de Azure con clave de API estáticaUsar BYOK (traiga su propia clave)
GitHub Copilot suscripción disponibleUsar Configuración de OAuth de GitHub

Consulte también