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 il certificato client può essere mantenuto in un insieme di credenziali delle chiavi di Azure.

L'uso di questo metodo di autenticazione consente di gestire i certificati da una posizione centrale usando l'autorità di certificazione (CA) per la rotazione o la revoca.

Altre informazioni sui certificati sono disponibili in Microsoft Entra ID nella pagina GitHub dei flussi di credenziali client.

metodo

  1. Incorporare il contenuto con l'entità servizio.

  2. Creare un certificato.

  3. Configurare l'autenticazione del certificato.

  4. Ottenere il certificato da Azure Key Vault.

  5. Eseguire l'autenticazione usando un'entità servizio e un certificato.

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 si dispone già di contenuto incorporato usando un'entità servizio, ignorare questo passaggio e passare al passaggio 2.

Passaggio 2: Creare un certificato

È possibile ottenere un certificato da un'autorità di certificazione attendibile o generare manualmente un certificato.

Questa sezione descrive la creazione di un certificato con Azure Key Vault e il download del file di .cer che contiene la chiave pubblica.

  1. Accedere a Microsoft Azure.

  2. Cercare e selezionare il collegamento Insiemi di credenziali delle chiavi .

    Screenshot della finestra portale di Azure, che mostra un collegamento al servizio dell'insieme di credenziali delle chiavi nell'elenco Servizi.

  3. Selezionare l'insieme di credenziali delle chiavi a cui si vuole aggiungere un certificato.

    Screenshot della finestra di portale di Azure, che mostra un elenco di insiemi di credenziali delle chiavi sfocati nell'elenco Insiemi di credenziali delle chiavi.

  4. Seleziona Certificati.

    Screenshot della finestra portale di Azure, che mostra la pagina Insiemi di credenziali delle chiavi con l'elemento Certificati evidenziato.

  5. Seleziona Genera/Importa.

    Screenshot della finestra portale di Azure, che mostra il riquadro Certificato con l'elemento Generate/Import evidenziato.

  6. Configurare i campi Crea un certificato come indicato di seguito:

    • Metodo di creazione del certificato - Generale

    • Nome certificato: immettere un nome per il certificato

    • Tipo di autorità di certificazione (CA) - Certificato autofirmato

    • Oggetto - Nome distinto X.500

    • Nomi DNS - 0 nomi DNS

    • Periodo di validità (in mesi) - Immettere la durata di validità del certificato

    • Tipo di contenuto - PKCS #12

    • Tipo di azione durata - Rinnovo automatico in una determinata percentuale di durata

    • Durata percentuale - 80

    • Configurazione avanzata dei criteri - Non configurata

  7. Seleziona Crea. Il certificato appena creato è disabilitato per impostazione predefinita. L'abilitazione può richiedere fino a cinque minuti.

  8. Selezionare il certificato creato.

  9. Selezionare Download in formato CER. Il file scaricato contiene la chiave pubblica.

    Screenshot della finestra portale di Azure, che mostra il pulsante Download in formato CER evidenziato.

Passaggio 3: Configurare l'autenticazione del certificato

  1. Nell'applicazione Microsoft Entra selezionare la scheda Certificati e segreti .

    Screenshot della finestra portale di Azure, che mostra il riquadro certificati e segreti per un'app.

  2. Selezionare Carica certificato e caricare il file .cer creato e scaricato nel passaggio 2 di questa esercitazione. Il file .cer contiene la chiave pubblica.

Passaggio 4: Ottenere il certificato da Azure Key Vault

Usare l'identità del servizio gestita (MSI) per ottenere il certificato da Azure Key Vault. Questo processo comporta il recupero del certificato pfx che contiene sia le chiavi pubbliche che private.

Fare riferimento all'esempio di codice per leggere il certificato da Azure Key Vault. Per usare Visual Studio, vedere Configurare Visual Studio per l'uso dell'identità del servizio gestito.

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, vedere l'esempio di codice seguente.

Nota

Se si ha già 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 dell'identità del servizio gestito

Quando si crea una soluzione incorporata, potrebbe essere utile configurare Visual Studio per l'uso dell'identità del servizio gestita. MSI è una funzionalità che consente di gestire l'identità di Microsoft Entra. Dopo la configurazione, Visual Studio eseguirà l'autenticazione in Azure Key Vault.

Nota

L'utente che accede a Visual Studio richiede le autorizzazioni di Azure Key Vault per ottenere il certificato.

  1. Aprire il progetto in Visual Studio.

  2. Selezionare Opzioni strumenti>.

    Screenshot della finestra di Visual Studio, che mostra il pulsante Opzioni evidenziato nel menu Strumenti.

  3. Cercare e selezionare Selezione account.

    Screenshot della finestra Opzioni di Visual Studio, che mostra l'opzione Selezione account evidenziata nei risultati della ricerca.

  4. Aggiungere l'account che ha accesso ad Azure Key Vault.