Incorporer du contenu Power BI avec un principal de service et un certificat

L’authentification par certificat vous permet d’être authentifié par Microsoft Entra ID avec un certificat client. Le certificat client peut se trouver sur un appareil Windows, Android ou iOS, ou être stocké dans un coffre de clés Azure.

L’utilisation de cette méthode d’authentification permet de gérer les certificats à partir d’un emplacement central en utilisant l’autorité de certification pour la rotation ou la révocation.

Vous pouvez en savoir plus sur les certificats dans Microsoft Entra ID sur la page GitHub Client credential flows.

Méthode

  1. Incorporer du contenu dans le principal de service.

  2. Créer un certificat.

  3. Configurer l’authentification par certificat.

  4. Obtenir le certificat auprès d’Azure Key Vault.

  5. S’authentifier en utilisant un principal de service et un certificat.

Étape 1 : Incorporer du contenu dans le principal de service

Pour incorporer votre contenu dans le principal de service, suivez les instructions fournies dans Incorporer du contenu Power BI avec un principal de service et un secret d’application.

Notes

Si vous disposez déjà d’un contenu incorporé à l’aide d’un principal de service, ignorez cette étape et passez à l’étape 2.

Étape 2 : Créer un certificat

Vous pouvez vous procurer un certificat auprès d’une autorité de certification approuvée ou bien générer vous-même un certificat.

Cette section décrit la création d’un certificat en utilisant Azure Key Vault et le téléchargement du fichier .cer, qui contient la clé publique.

  1. Connectez-vous à Microsoft Azure.

  2. Recherchez et sélectionnez le lien Coffre de clés.

    Capture d’écran de la fenêtre Portail Azure, qui montre un lien vers le service Key Vault dans la liste Services.

  3. Sélectionnez le coffre de clés auquel vous souhaitez ajouter un certificat.

    Capture d’écran de la fenêtre Portail Azure, qui montre une liste de coffres de clés flous dans la liste Coffres de clés.

  4. Sélectionnez Certificats.

    Capture d’écran de la fenêtre Portail Azure, qui montre la page Coffres de clés avec l’élément Certificats en évidence.

  5. Sélectionnez Générer/Importer.

    Capture d’écran de la fenêtre Portail Azure, qui montre le volet Certificat avec l’élément Générer/importer en évidence.

  6. Configurez les champs de Créer un certificat comme suit :

    • Méthode de création de certificat : Général

    • Nom du certificat : Entrez un nom pour votre certificat

    • Type d’autorité de certification : Certificat auto-signé

    • Sujet : Un nom unique X. 500

    • Noms DNS : 0 noms DNS

    • Période de validité (en mois) : Entrez la durée de validité du certificat

    • Type de contenu : PKCS #12

    • Type d’action de la durée de vie : Renouveler automatiquement en fonction d’un pourcentage donné de la durée de vie

    • Pourcentage de la durée de vie : 80

    • Configuration de stratégie avancée : Non configurée

  7. Sélectionnez Create (Créer). Le certificat nouvellement créé est désactivé par défaut. L’activation peut prendre jusqu’à cinq minutes.

  8. Sélectionnez le certificat que vous avez créé.

  9. Sélectionnez Télécharger au format CER. Le fichier téléchargé contient la clé publique.

    Capture d’écran de la fenêtre Portail Azure, qui montre le bouton Télécharger au format CER en évidence.

Étape 3 : Configurer l’authentification par certificat

  1. Dans votre application Microsoft Entra, sélectionnez l’onglet Certificats et secrets.

    Capture d’écran de la fenêtre Portail Azure, qui montre le volet Certificats et secrets d’une application.

  2. Sélectionnez Charger le certificat et chargez le fichier .cer que vous avez créé et téléchargé à l’étape 2 de ce tutoriel. Le fichier .cer contient la clé publique.

Étape 4 : Obtenir le certificat auprès d’Azure Key Vault

Utilisez Managed Service Identity (MSI) pour obtenir le certificat auprès d’Azure Key Vault. Ce processus implique l’obtention du certificat .pfx contenant les clés publique et privée.

Reportez-vous à l’exemple de code pour lire le certificat provenant d’Azure Key Vault. Si vous voulez utiliser Visual Studio, reportez-vous à Configurer Visual Studio pour utiliser 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));
}

Étape 5 : S’authentifier en utilisant un principal de service et un certificat

Vous pouvez authentifier votre application en utilisant un principal de service et un certificat stocké dans Azure Key Vault en vous connectant à Azure Key Vault.

Pour vous connecter à Azure Key Vault et y lire le certificat, reportez-vous à l’exemple de code suivant.

Notes

Si vous disposez déjà d’un certificat créé par votre organisation, chargez le fichier .pfx sur Azure Key Vault.

// 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();
}

Configurer Visual Studio pour utiliser MSI

Quand vous créez une solution incorporée, il peut être utile de configurer Visual Studio pour utiliser Managed Service Identity (MSI). MSI est une fonctionnalité qui vous permet de gérer votre identité Microsoft Entra. Une fois configuré, il permet à Visual Studio de s’authentifier auprès de votre coffre Azure Key Vault.

Notes

L’utilisateur qui se connecte à Visual Studio doit disposer d’autorisations Azure Key Vault pour obtenir le certificat.

  1. Ouvrez votre projet dans Visual Studio.

  2. Sélectionnez Outils>Options.

    Capture d’écran de la fenêtre Visual Studio, qui montre le bouton Options en évidence dans le menu Outils.

  3. Recherchez et sélectionnez Sélection de compte.

    Capture d’écran de la fenêtre Options de Visual Studio, qui montre l’option Sélection de compte en évidence dans les résultats de la recherche.

  4. Ajoutez le compte qui a accès à votre coffre Azure Key Vault.