Freigeben über


Authentifizierung bei Azure OpenAI von einer in Azure gehosteten App aus mit Microsoft Entra ID.

Diese Artikel veranschaulicht die Verwendung von in Microsoft Entra ID verwalteten Identitäten und der Microsoft.Extensions.AI-Bibliothek zum Authentifizieren einer von Azure gehosteten App bei einer Azure OpenAI-Ressource.

Eine verwaltete Identität von Microsoft Entra ID ermöglicht Ihrer App den einfachen Zugriff auf andere von Microsoft Entra geschützte Ressourcen wie Azure OpenAI. Die Identität wird von der Azure-Plattform verwaltet und erfordert nicht, dass Sie Geheimnisse bereitstellen, verwalten oder aktualisieren.

Voraussetzungen

Hinzufügen einer verwalteten Identität zu App Service

Verwaltete Identitäten stellen eine automatisch verwaltete Identität in Microsoft Entra-ID für Anwendungen bereit, die beim Herstellen einer Verbindung mit Ressourcen verwendet werden, die die Microsoft Entra-Authentifizierung unterstützen. Anwendungen können verwaltete Identitäten verwenden, um Microsoft Entra-Token abzurufen, ohne Anmeldeinformationen verwalten zu müssen. Ihre Anwendung kann zwei Arten von Identitäten zugewiesen werden:

  • Eine systemseitig zugewiesene Identität ist an Ihre Anwendung gebunden und wird gelöscht, wenn Ihre App gelöscht wird. Eine App kann nur eine vom System zugewiesene Identität aufweisen.
  • Eine vom Benutzer zugewiesene Identität ist eine eigenständige Azure-Ressource, die Ihrer App zugewiesen werden kann. Eine App kann über mehrere vom Benutzer zugewiesene Identitäten verfügen.
  1. Navigieren Sie im Azure-Portalzur Seite Ihrer App, und scrollen Sie dann nach unten zur Gruppe Einstellungen.

  2. Wählen Sie Identität aus.

  3. Schalten Sie auf der Registerkarte Systemseitig zugewiesen den Status auf Ein um, und wählen Sie dann Speichern aus.

    Ein Screenshot, der zeigt, wie einer App eine vom System zugewiesene verwaltete Identität hinzugefügt wird.

    Anmerkung

    Der vorherige Screenshot zeigt diesen Prozess in einem Azure App Service, die Schritte sind jedoch auf anderen Hosts wie Azure Container-Apps ähnlich.

Führen Sie den Befehl az webapp identity assign aus, um eine vom System zugewiesene Identität zu erstellen:

az webapp identity assign --name <appName> --resource-group <groupName>

Hinzufügen einer Azure OpenAI-Benutzerrolle zur Identität

  1. Navigieren Sie im Azure Portalzu dem Bereich, auf den Sie Azure OpenAI Zugriff gewähren möchten. Der Bereich kann eine -Managementgruppe, ein -Abonnement, eine -Ressourcengruppeoder eine bestimmte Azure OpenAI--Ressource sein.

  2. Wählen Sie im linken Navigationsbereich Zugriffssteuerung (IAM) aus.

  3. Wählen Sie Hinzufügen und dann Rollenzuweisung hinzufügen aus.

    Screenshot, der zeigt, wie eine RBAC-Rolle hinzugefügt wird.

  4. Wählen Sie auf der Registerkarte Rolle die Rolle Cognitive Services OpenAI User aus.

  5. Wählen Sie auf der Registerkarte Mitglieder die verwaltete Identität aus.

  6. Wählen Sie auf der Registerkarte "Überprüfen + Zuweisen" die Option "Überprüfen + Zuweisen" aus, um die Rolle zuzuweisen.

Sie können die Azure CLI verwenden, um Ihrer verwalteten Identität in unterschiedlichen Bereichen die OpenAI-Benutzerrolle "Cognitive Services OpenAI" zuzuweisen.

az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"

Implementieren der Identitätsauthentifizierung in Ihrem App-Code

  1. Fügen Sie Ihrer App die folgenden NuGet-Pakete hinzu:

    dotnet add package Azure.Identity
    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.Azure
    dotnet add package Microsoft.Extensions.AI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    

    Die vorherigen Pakete behandeln die folgenden Bedenken für dieses Szenario:

  2. Erstellen Sie in der Program.cs Datei Ihrer App ein DefaultAzureCredential Objekt, um verfügbare Anmeldeinformationen zu ermitteln und zu konfigurieren:

    // For example, will discover Visual Studio or Azure CLI credentials
    // in local environments and managed identity credentials in production deployments
    var credential = new DefaultAzureCredential(
        new DefaultAzureCredentialOptions
        {
            // If necessary, specify the tenant ID,
            // user-assigned identity client or resource ID, or other options
        }
    );
    
  3. Erstellen Sie einen KI-Dienst, und registrieren Sie ihn bei der Dienstsammlung:

    string endpoint = builder.Configuration["AZURE_OPENAI_ENDPOINT"];
    string deployment = builder.Configuration["AZURE_OPENAI_GPT_NAME"];
    
    builder.Services.AddChatClient(
        new AzureOpenAIClient(new Uri(endpoint), credential)
        .AsChatClient(deployment));
    
  4. Einfügen des registrierten Diensts für die Verwendung in Ihren Endpunkten:

    app.MapGet("/test-prompt", async (IChatClient chatClient) =>
    {
        return await chatClient.CompleteAsync("Test prompt", new ChatOptions());
    })
    .WithName("Test prompt");
    

    Tipp

    Weitere Informationen über die ASP.NET Core-Abhängigkeitsinjektion und das Registrieren anderer KI-Diensttypen finden Sie in der Dokumentation zur Abhängigkeitsinjektion im Azure SDK für .NET.