Skip to main content

Identité gérée Azure avec BYOK

Le BYOK (apportez votre propre clé) du SDK GitHub Copilot prend en charge les clés API statiques, mais les déploiements Azure utilisent souvent l’identité managée (Microsoft Entra ID) au lieu de clés à longue durée de vie. Le SDK GitHub Copilot est conçu pour s’intégrer au SDK Azure Identity afin d’offrir un maximum de flexibilité. Fournissez une fonction de rappel pour un fournisseur de jeton porteur permettant d’obtenir à la demande des jetons actualisés à l’aide d’une API du SDK Azure Identity.

Ce guide explique comment utiliser les API du SDK Azure Identity pour s’authentifier auprès des modèles Microsoft Foundry via le SDK GitHub Copilot. La plupart des langues utilisent DefaultAzureCredential; Rust utilise DeveloperToolsCredential localement et ManagedIdentityCredential dans Azure.

Fonctionnement

Le point de terminaison de Microsoft Foundry compatible avec OpenAI (https://<resource-name>.openai.azure.com/openai/v1/) accepte des jetons de porteur de Microsoft Entra ID à la place de clés d’API statiques. Ce guide utilise un rappel de fournisseur de jetons afin que le runtime du KIT de développement logiciel (SDK) GitHub Copilot puisse demander de nouveaux jetons à la demande.

À l’aide de Python comme exemple, le flux est le suivant :

  1. Configurez DefaultAzureCredential pour votre environnement.
  2. Transmettez un rappel, dans bearer_token_provider la configuration du fournisseur BYOK, qui utilise DefaultAzureCredential pour obtenir un jeton pour l’étendue https://ai.azure.com/.default .
  3. Autorisez le SDK GitHub Copilot à demander de nouveaux jetons d’authentification lorsque nécessaire via cette fonction de rappel.

Diagramme : diagramme de séquence montrant le processus décrit.

Exemples de code

Prerequisites

Installez les packages Azure Identity et GitHub Copilot SDK pour votre langue :

Langages de code navigation

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

Utiliser un rappel de fournisseur de jetons

Utilisez cette approche lorsque vous souhaitez que le runtime du KIT de développement logiciel (SDK) GitHub Copilot demande de nouveaux jetons à la demande via un rappel que vous fournissez. Le sdk Azure Identity gère la mise en cache des jetons et le minutage d’actualisation.

Voici les implémentations spécifiques au langage :

Langages de code 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);

Configuration de l’environnement

VariableDescriptionExample
AZURE_TOKEN_CREDENTIALSLors de l’exécution dans Azure, définissez cette valeur sur ManagedIdentityCredential. Lors de l’exécution en local, définissez-le sur soit dev, soit le nom d’un identifiant d’outil de développement, tel que AzureCliCredential.ManagedIdentityCredential
AZURE_CLIENT_ID
Facultatif. Lors de l’exécution dans Azure, définissez cette valeur sur l’ID client d’une identité managée attribuée par l’utilisateur lors de l’utilisation de ManagedIdentityCredential. S’il n’est pas défini, Azure utilise l’identité managée affectée par le système.11111111-2222-3333-4444-555555555555
FOUNDRY_RESOURCE_URLURL de votre ressource Microsoft Foundryhttps://<my-resource>.openai.azure.com

Aucune variable d’environnement de clé API n’est nécessaire : l’authentification est gérée par les informations d’identification d’identité Azure. Dans .NET, Go, Java, Python et TypeScript prennent DefaultAzureCredential automatiquement en charge :

  • Identité managée (affectée par le système ou affectée par l’utilisateur) : pour les applications hébergées par Azure
  • Azure CLI (az login) : pour le développement local
  • Variables d’environnement (AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET) : pour les entités de service.
  • Identité de la charge de travail : pour Kubernetes

Dans .NET, Go, Java, Python et TypeScript, ManagedIdentityCredential lit AZURE_CLIENT_ID pour sélectionner une identité managée affectée par l’utilisateur. Rust est une exception dans ce guide.

Dans Rust, utilisez-le DeveloperToolsCredential pour le développement local et ManagedIdentityCredential lors de l’exécution dans Azure. Pour les autres langues, consultez la documentation DefaultAzureCredential de la chaîne complète d’identifiants :

Quand utiliser ce modèle

ScénarioRecommandation
Application hébergée par Azure avec l’identité managée
✅ Utiliser ce modèle
Application avec un principal de service Microsoft Entra existant
✅ Utiliser ce modèle
Développement local avec az login
✅ Utiliser ce modèle
Environnement non-Azure avec clé API statiqueUtiliser BYOK (apportez votre propre clé)
abonnement GitHub Copilot disponibleUtiliser configuration de GitHub OAuth

Voir aussi