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
É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.
Connectez-vous à Microsoft Azure.
Recherchez et sélectionnez le lien Coffre de clés.
Sélectionnez le coffre de clés auquel vous souhaitez ajouter un certificat.
Sélectionnez Certificats.
Sélectionnez Générer/Importer.
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
Sélectionnez Create (Créer). Le certificat nouvellement créé est désactivé par défaut. L’activation peut prendre jusqu’à cinq minutes.
Sélectionnez le certificat que vous avez créé.
Sélectionnez Télécharger au format CER. Le fichier téléchargé contient la clé publique.
Étape 3 : Configurer l’authentification par certificat
Dans votre application Microsoft Entra, sélectionnez l’onglet Certificats et secrets.
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.
Ouvrez votre projet dans Visual Studio.
Sélectionnez Outils>Options.
Recherchez et sélectionnez Sélection de compte.
Ajoutez le compte qui a accès à votre coffre Azure Key Vault.