Freigeben über


Einbetten von Power BI-Inhalten mit Dienstprinzipal und einem Zertifikat

Die zertifikatbasierte Authentifizierung ermöglicht es Ihnen, mit einem Clientzertifikat von Microsoft Entra-ID authentifiziert zu werden. Das Clientzertifikat kann sich auf einem Windows-, Android- oder iOS-Gerät befinden, oder das Clientzertifikat kann in einem Azure Key Vault aufbewahrt werden.

Die Verwendung dieser Authentifizierungsmethode ermöglicht die Verwaltung von Zertifikaten von einem zentralen Ort mithilfe der Zertifizierungsstelle (CA) zur Erneuerung oder Sperrung.

Weitere Informationen zu Zertifikaten in der Microsoft Entra-ID finden Sie auf der Seite "Clientanmeldeinformationsflüsse ".

Methode

  1. Betten Sie Ihre Inhalte mit dem Dienstprinzipal ein.

  2. Erstellen Sie ein Zertifikat.

  3. Einrichten der Zertifikatauthentifizierung.

  4. Rufen Sie das Zertifikat aus Azure Key Vault ab.

  5. Authentifizierung mit einem Dienstprinzipal und einem Zertifikat.

Schritt 1 : Einbetten von Inhalten mit Dienstprinzipal

Wenn Sie Ihre Inhalte mit einem Dienstprinzipal einbetten möchten, befolgen Sie die Anweisungen unter Einbetten von Power BI-Inhalten mit Dienstprinzipal und einem geheimen Anwendungsschlüssel.

Hinweis

Wenn Sie bereits Inhalte haben, die mit einem Dienstprinzipal eingebettet sind, überspringen Sie diesen Schritt, und fahren Sie mit Schritt 2 fort.

Schritt 2 : Erstellen eines Zertifikats

Sie können ein Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle erwerben oder selbst ein Zertifikat generieren.

In diesem Abschnitt wird das Erstellen eines Zertifikats mithilfe von Azure Key Vault und das Herunterladen der .cer-Datei beschrieben, die den öffentlichen Schlüssel enthält.

  1. Melden Sie sich bei Microsoft Azure an.

  2. Suchen Sie nach dem Link Schlüsseltresore und wählen Sie ihn aus.

    Screenshot des Azure-Portalfensters, in dem ein Link zum Schlüsseltresordienst in der Dienstliste angezeigt wird.

  3. Wählen Sie den Schlüsseltresor aus, dem Sie ein Zertifikat hinzufügen möchten.

    Screenshot des Azure-Portalfensters, in dem eine Liste verschwommener Schlüsseltresor in der Liste der Schlüsseltresor angezeigt wird.

  4. Wählen Sie Zertifikateaus.

    Screenshot des Azure-Portalfensters, in dem die Seite

  5. Wählen Sie die Option Generieren/Importieren aus.

    Screenshot des Azure-Portalfensters, in dem der Bereich

  6. Konfigurieren Sie die Felder zum Erstellen eines Zertifikats wie folgt:

    • Methode der Zertifikaterstellung – Allgemein

    • Zertifikatname – Geben Sie einen Namen für Ihr Zertifikat ein.

    • Typ der Zertifizierungsstelle – selbstsigniertes Zertifikat

    • Betreff - Ein X.500-Distinguished Name

    • DNS-Namen - 0 DNS-Namen

    • Gültigkeitszeitraum (in Monaten) – Gültigkeitsdauer des Zertifikats eingeben

    • Inhaltstyp - PKCS #12

    • Aktionstyp "Lebensdauer" – Automatische Verlängerung bei einer bestimmten Prozentualen Lebensdauer

    • Prozentuale Lebensdauer - 80

    • Erweiterte Richtlinienkonfiguration – Nicht konfiguriert

  7. Wählen Sie "Erstellen" aus. Das neu erstellte Zertifikat ist standardmäßig deaktiviert. Es kann bis zu fünf Minuten dauern, bis sie aktiviert werden.

  8. Wählen Sie das von Ihnen erstellte Zertifikat aus.

  9. Wählen Sie "Im CER-Format herunterladen" aus. Die heruntergeladene Datei enthält den öffentlichen Schlüssel.

    Screenshot des Azure-Portalfensters, in dem die hervorgehobene Schaltfläche

Schritt 3 : Einrichten der Zertifikatauthentifizierung

  1. Wählen Sie in Ihrer Microsoft Entra-Anwendung die Registerkarte "Zertifikate und geheime Schlüssel " aus.

    Screenshot des Azure-Portalfensters, in dem der Bereich

  2. Wählen Sie "Zertifikat hochladen" aus, und laden Sie die .cer Datei hoch, die Sie erstellt und in Schritt 2 dieses Lernprogramms heruntergeladen haben. Die datei .cer enthält den öffentlichen Schlüssel.

Schritt 4 – Abrufen des Zertifikats aus Azure Key Vault

Verwenden Sie managed Service Identity (MSI), um das Zertifikat aus Azure Key Vault abzurufen. Dieser Prozess umfasst das Abrufen des PFX-Zertifikats , das sowohl die öffentlichen als auch privaten Schlüssel enthält.

Weitere Informationen finden Sie im Codebeispiel zum Lesen des Zertifikats aus Azure Key Vault. Wenn Sie Visual Studio verwenden möchten, lesen Sie " Konfigurieren von Visual Studio" für die Verwendung von MSI.

private X509Certificate2 ReadCertificateFromVault(string certName)
{
    var serviceTokenProvider = new AzureServiceTokenProvider();
    var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback));
    CertificateBundle certificate = null;
    SecretBundle secret = null;

    certificate = keyVaultClient.GetCertificateAsync($"https://{KeyVaultName}.vault.azure.net/", certName).Result;
    secret = keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier).Result;
    
    return new X509Certificate2(Convert.FromBase64String(secret.Value));
}

Schritt 5: Authentifizieren mithilfe des Dienstprinzipals und eines Zertifikats

Sie können Ihre App authentifizieren, die einen Dienstprinzipal und ein Zertifikat verwendet, das in Azure Key Vault gespeichert ist, indem Sie eine Verbindung mit Azure Key Vault herstellen.

Um das Zertifikat aus Azure Key Vault zu verbinden und zu lesen, siehe folgendes Codebeispiel.

Hinweis

Wenn Sie bereits über ein von Ihrer Organisation erstelltes Zertifikat verfügen, laden Sie die PFX-Datei in Azure Key Vault hoch.

// Preparing needed variables
var Scope = "https://analysis.windows.net/powerbi/api/.default"
var ApplicationId = "{YourApplicationId}"
var tenantSpecificURL = "https://login.microsoftonline.com/{YourTenantId}/"
X509Certificate2 certificate = ReadCertificateFromVault(CertificateName);

// Authenticating with a SP and a certificate
public async Task<AuthenticationResult> DoAuthentication(){
    IConfidentialClientApplication clientApp = null;
    clientApp = ConfidentialClientApplicationBuilder.Create(ApplicationId)
                                                    .WithCertificate(certificate)
                                                    .WithAuthority(tenantSpecificURL)
                                                    .Build();
    return await clientApp.AcquireTokenForClient(Scope).ExecuteAsync();
}

Konfigurieren von Visual Studio für die Verwendung von MSI

Wenn Sie eine eingebettete Lösung erstellen, kann es hilfreich sein, Visual Studio so zu konfigurieren, dass verwaltete Dienstidentität (Managed Service Identity, MSI) verwendet wird. MSI ist ein Feature, mit dem Sie Ihre Microsoft Entra-Identität verwalten können. Nach der Konfiguration kann Visual Studio sich bei Ihrem Azure Key Vault authentifizieren.

Hinweis

Der Benutzer, der sich bei Visual Studio anmeldet, erfordert Azure Key Vault-Berechtigungen, um das Zertifikat abzurufen.

  1. Öffnen Sie Ihr Projekt in Visual Studio.

  2. Wählen Sie Extras>Optionen aus.

    Screenshot des Visual Studio-Fensters, in dem die hervorgehobene Schaltfläche

  3. Suchen und wählen Sie "Kontoauswahl" aus.

    Screenshot des Fensters

  4. Fügen Sie das Konto hinzu, das Zugriff auf Ihren Azure Key Vault hat.