Incorporare contenuto di Power BI con un'entità servizio e un certificato
L'autenticazione basata su certificati consente di essere autenticati da Microsoft Entra ID con un certificato client. Il certificato client può trovarsi in un dispositivo Windows, Android o iOS oppure può essere mantenuto in un Azure Key Vault.
L'uso di questo metodo di autenticazione consente di gestire i certificati da una posizione centrale, usando la CA, per la rotazione o la revoca.
Per altre informazioni sui certificati in Microsoft Entra ID, vedere la pagina di GitHub Client credential flows (Flussi di credenziali client).
metodo
Passaggio 1: incorporare il contenuto con l'entità servizio
Per incorporare il contenuto con un'entità servizio, seguire le istruzioni in Incorporare contenuto di Power BI con un'entità servizio e un segreto dell'applicazione.
Nota
Se è già stato incorporato un contenuto usando un'entità servizio, ignorare questo passaggio e andare al passaggio 2.
Passaggio 2: creare un certificato
È possibile ottenere un certificato da un'autorità di certificazione attendibile oppure generare un certificato autonomamente.
Questa sezione descrive la creazione di un certificato usando Azure Key Vault e il download del file con estensione cer che contiene la chiave pubblica.
Accedere a Microsoft Azure.
Cercare e selezionare il collegamento Insiemi di credenziali delle chiavi.
Selezionare l'insieme di credenziali delle chiavi a cui si vuole aggiungere un certificato.
Seleziona Certificati.
Seleziona Genera/Importa.
Configurare i campi Crea un certificato come segue:
Metodo di creazione del certificato - Generale
Nome del certificato - Immettere un nome per il certificato
Tipo di Autorità di certificazione - Certificato autofirmato
Soggetto- Nome distinto X.500
Nomi DNS - 0 nomi DNS
Periodo di validità (in mesi) - Immettere la durata di validità del certificato
Tipo contenuto - PKCS #12
Tipo di azione relativa alla durata - Rinnova automaticamente in corrispondenza della percentuale specificata della durata
Percentuale della durata - 80
Configurazione avanzata dei criteri - Non configurata
Seleziona Crea. Il certificato appena creato è disabilitato per impostazione predefinita. Possono essere necessari fino a cinque minuti perché venga abilitato.
Selezionare il certificato creato.
Selezionare Scarica in formato CER. Il file scaricato contiene la chiave pubblica.
Passaggio 3 - Configurare l'autenticazione del certificato
Nell'applicazione Microsoft Entra selezionare la scheda Certificati e segreti.
Selezionare Carica certificato e caricare il file CER creato e scaricato nel passaggio 2 di questa esercitazione. Il file con estensione cer contiene la chiave pubblica.
Passaggio 4 - Ottenere il certificato da Azure Key Vault
Usare Identità del servizio gestita per ottenere il certificato da Azure Key Vault. Per questo processo occorre ottenere il certificato pfx che contiene sia le chiavi pubbliche che quelle private.
Vedere l'esempio di codice per la lettura del certificato da Azure Key Vault. Se si vuole usare Visual Studio, vedere Configurare Visual Studio per l'uso di Identità del servizio gestita.
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));
}
Passaggio 5 - Eseguire l'autenticazione con un'entità servizio e un certificato
È possibile autenticare l'app che usa un'entità servizio e un certificato archiviato in Azure Key Vault, connettendosi ad Azure Key Vault.
Per connettersi e leggere il certificato da Azure Key Vault, fare riferimento al codice di esempio riportato di seguito.
Nota
Se è già disponibile un certificato creato dall'organizzazione, caricare il file con estensione pfx in 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();
}
Configurare Visual Studio per l'uso di Identità del servizio gestita
Quando si crea una soluzione incorporata, può essere utile configurare Visual Studio per l'uso di Identità del servizio gestita. MSI è una funzionalità che consente di gestire l'identità di Microsoft Entra. Una volta configurata, consentirà a Visual Studio di eseguire l'autenticazione in base ad Azure Key Vault.
Nota
L'utente che accede a Visual Studio richiede le autorizzazioni di Azure Key Vault per ottenere il certificato.
Aprire il progetto in Visual Studio.
Selezionare Strumenti>Opzioni.
Cercare e selezionare Selezione account.
Aggiungere l'account che ha accesso ad Azure Key Vault.