Condividi tramite


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

  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 con 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 è 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.

  1. Accedere a Microsoft Azure.

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

    Screenshot della finestra del 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 del 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 del portale di Azure, che mostra la pagina Insiemi di credenziali delle chiavi con l'elemento Certificati evidenziato.

  5. Seleziona Genera/Importa.

    Screenshot della finestra del portale di Azure, che mostra il riquadro Certificato con l'elemento Genera/Importa evidenziato.

  6. 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

  7. Seleziona Crea. Il certificato appena creato è disabilitato per impostazione predefinita. Possono essere necessari fino a cinque minuti perché venga abilitato.

  8. Selezionare il certificato creato.

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

    Screenshot della finestra del portale di Azure, che mostra il pulsante Scarica 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 del 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 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.

  1. Aprire il progetto in Visual Studio.

  2. Selezionare Strumenti>Opzioni.

    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.