Conteúdo inserido do Power BI com a entidade de serviço e um certificadoEmbed Power BI content with service principal and a certificate

A autenticação baseada em certificado permite que você seja autenticado pelo Azure AD (Azure Active Directory) com um certificado de cliente em um dispositivo Windows, Android ou iOS ou seja mantido em um Azure Key Vault.Certificate-based authentication enables you to be authenticated by Azure Active Directory (Azure AD) with a client certificate on a Windows, Android or iOS device, or kept in an Azure Key Vault.

O uso desse método de autenticação permite gerenciar certificados de um local central, usando a AC para rotação ou revogação.Using this method of authentication allows managing certificates from a central place, using the CA, for rotation or revocation.

Você pode saber mais sobre certificados no Azure AD na página Fluxos de credencial do cliente do GitHub.You can learn more about certificates in Azure AD in the Client credential flows GitHub page.

MétodoMethod

  1. Inserir conteúdo com a entidade de serviço.Embed your content with service principal.

  2. Criar um certificado.Create a certificate.

  3. Configurar a autenticação de certificado.Set up certificate authentication.

  4. Obter o certificado do Azure Key Vault.Get the certificate from Azure Key Vault.

  5. Autenticar usando a entidade de serviço e um certificado.Authenticate using service principal and a certificate.

Etapa 1 – Inserir conteúdo com a entidade de serviçoStep 1 - Embed your content with service principal

Para inserir conteúdo com a entidade de serviço, siga as instruções fornecidas em Inserir conteúdo do Power BI com a entidade de serviço e um segredo do aplicativo.To embed your content with service principal, follow the instructions in Embed Power BI content with service principal and an application secret.

Observação

Se você já tem conteúdo inserido usando uma entidade de serviço, ignore esta etapa e prossiga para a etapa 2.If you already have content that's embedded using a service principal, skip this step and advance to step 2.

Etapa 2 – Criar um certificadoStep 2 - Create a certificate

Você pode adquirir um certificado de uma Autoridade de Certificação confiável ou gerar um certificado por conta própria.You can procure a certificate from a trusted Certificate Authority, or generate a certificate yourself.

Esta seção descreve como criar um certificado usando o Azure Key Vault e como baixar o arquivo .cer que contém a chave pública.This section describes creating a certificate using Azure Key Vault, and downloading the .cer file which contains the public key.

  1. Entre no Microsoft Azure.Log into Microsoft Azure.

  2. Pesquise Cofres de Chaves e clique no link Cofres de Chaves.Search for Key Vaults and click the Key Vaults link.

    Captura de tela mostrando um link para o cofre de chaves no portal do Azure.

  3. Clique no cofre de chaves ao qual você deseja adicionar um certificado.Click the key vault you want to add a certificate to.

    Captura de tela mostrando uma lista de cofres de chaves desfocados no portal do Azure.

  4. Clique em Certificados.Click Certificates.

    Captura de tela mostrando a página Cofres de chaves com Certificados em destaque.

  5. Clique em Gerar/Importar.Click Generate/Import.

    Captura de tela mostrando o painel Certificado com Gerar/Importar em destaque.

  6. Configure os campos para Criar um certificado da seguinte maneira:Configure the Create a certificate fields as follows:

    • Método de Criação de Certificado – GeralMethod of Certificate Creation - General

    • Nome do Certificado – Insira um nome para o seu certificadoCertificate Name - Enter a name for your certificate

    • Tipo de AC (Autoridade de Certificação) – Certificado autoassinadoType of Certificate Authority (CA) - Self-signed certificate

    • Entidade – Um nome diferenciado X.500Subject - An X.500 distinguished name

    • Nomes DNS – 0 nome DNSDNS Names - 0 DNS names

    • Período de Validade (em meses) – Insira a duração da validade do certificadoValidity Period (in months) - Enter the certificate's validity duration

    • Tipo de Conteúdo – PKCS nº 12Content Type - PKCS #12

    • Tipo de Ação de Tempo de Vida – Renovar automaticamente com um determinado percentual de tempo de vidaLifetime Action Type - Automatically renew at a given percentage lifetime

    • Percentual de Tempo de Vida – 80Percentage Lifetime - 80

    • Configuração de Política Avançada – Não configuradoAdvanced Policy Configuration - Not configured

  7. Clique em Criar.Click Create. O certificado recém-criado está desabilitado por padrão.The newly created certificate is disabled by default. Pode levar até cinco minutos para ele ser habilitado.It can take up to five minutes to become enabled.

  8. Selecione o certificado que você criou.Select the certificate you created.

  9. Clique em Baixar no formato CER.Click Download in CER format. O arquivo baixado contém a chave pública.The downloaded file contains the public key.

    Captura de tela mostrando o botão Baixar no formato CER.

Etapa 3 – Configurar uma autenticação de certificadoStep 3 - Set up certificate authentication

  1. No aplicativo do Azure AD, clique na guia Certificados e segredos.In your Azure AD application, click the Certificates & secrets tab.

    Captura de tela mostrando o painel Certificados e segredos de um aplicativo no portal do Azure.

  2. Clique em Carregar certificado e carregue o arquivo .cer criado e baixado na etapa 2 deste tutorial.Click Upload certificate and upload the .cer file you created and downloaded in step 2 of this tutorial. O arquivo .cer contém a chave pública.The .cer file contains the public key.

Etapa 4 – Obter um certificado do Azure Key VaultStep 4 - Get the certificate from Azure Key Vault

Use as identidades gerenciadas para recursos do Azure para obter o certificado do Azure Key Vault.Use Managed Service Identity (MSI) to get the certificate from Azure Key Vault. Esse processo envolve obter o certificado .pfx que contém as chaves pública e privada.This process involves getting the .pfx certificate that contains both the public and private keys.

Consulte o exemplo de código para ler o certificado no Azure Key Vault.Refer to the code example for reading the certificate from Azure Key Vault. Se você deseja usar o Visual Studio, consulte Configurar o Visual Studio para usar as identidades gerenciadas para recursos do Azure.If you want to use Visual Studio, refer to Configure Visual Studio to use 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;
    try
    {
        certificate = keyVaultClient.GetCertificateAsync($"https://{KeyVaultName}.vault.azure.net/", certName).Result;
        secret = keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier).Result;
    }
    catch (Exception)
    {
        return null;
    }

    return new X509Certificate2(Convert.FromBase64String(secret.Value));
}

Etapa 5 – Autenticar usando a entidade de serviço e um certificadoStep 5 - Authenticate using service principal and a certificate

Você pode autenticar o seu aplicativo usando a entidade de serviço e um certificado que é armazenado no Azure Key Vault, conectando-se ao Azure Key Vault.You can authenticate your app using service principal and a certificate that's stored in Azure Key Vault, by connecting to Azure Key Vault.

Para se conectar e ler o certificado no Azure Key Vault, consulte o código abaixo.To connect and read the certificate from Azure Key Vault, refer to the code below.

Observação

Se você já tiver um certificado criado pela sua organização, carregue o arquivo .pfx no Azure Key Vault.If you already have a certificate created by your organization, upload the .pfx file to 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();
    try
    {
        authenticationResult = await clientApp.AcquireTokenForClient(Scope).ExecuteAsync();
    }
    catch (MsalException)
    {
        throw;
    }
    return authenticationResult
}

Configurar o Visual Studio para usar as identidades gerenciadas para recursos do AzureConfigure Visual Studio to use MSI

Ao criar a sua solução inserida, pode ser útil configurar o Visual Studio para usar as identidades gerenciadas para recursos do Azure.When creating your embedded solution, it may be useful to configure Visual Studio to use Managed Service Identity (MSI). As identidades gerenciadas para recursos do Azure são um recurso que você pode gerenciar a sua identidade do Azure AD.MSI is a feature that enables you to manage your Azure AD identity. Uma vez configurada, ela permitirá que o Visual Studio se autentique no seu Azure Key Vault.Once configured, it will let Visual Studio authenticate against your Azure Key Vault.

  1. Abra o projeto no Visual Studio.Open your project in Visual Studio.

  2. Clique em Ferramentas > Opções.Click Tools > Options.

    Captura de tela mostrando o botão Opções no menu Ferramentas do Visual Studio.

  3. Pesquise Seleção de Conta e clique em Seleção de Conta.Search for Account Selection and click Account Selection.

    Captura de tela mostrando a opção de seleção de conta na janela Opções do Visual Studio.

  4. Adicione a conta que tem acesso ao seu Azure Key Vault.Add the account that has access to your Azure Key Vault.

Próximas etapasNext steps