Conteúdo inserido do Power BI com a entidade de serviço e um certificado

A autenticação baseada em certificado permite que você seja autenticado pelo Microsoft Entra ID com um certificado de cliente. O certificado do cliente pode estar em um dispositivo Windows, Android ou iOS ou o certificado do cliente pode ser mantido em um Azure Key Vault.

O uso desse método de autenticação permite gerenciar certificados de um local central, usando a AC (autoridade de certificação) para rotação ou revogação.

Você pode saber mais sobre certificados no Microsoft Entra ID na página Fluxos de credencial do cliente do GitHub.

Método

  1. Inserir conteúdo com a entidade de serviço.

  2. Criar um certificado.

  3. Configurar a autenticação de certificado.

  4. Obter o certificado do Azure Key Vault.

  5. Autenticar usando a entidade de serviço e um certificado.

Etapa 1 – Inserir conteúdo com a entidade de serviço

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.

Observação

Se você já tem conteúdo inserido usando uma entidade de serviço, ignore esta etapa e prossiga para a etapa 2.

Etapa 2 – Criar um certificado

Você pode adquirir um certificado de uma Autoridade de Certificação confiável ou gerar um certificado por conta própria.

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.

  1. Entre no Microsoft Azure.

  2. Procure e selecione o link Key vaults.

    Captura de tela da janela portal do Azure, que mostra um link para o serviço do cofre de chaves na lista Serviços.

  3. Selecione o cofre de chaves ao qual deseja adicionar um certificado.

    Captura de tela da janela portal do Azure, que mostra uma lista de cofres de chaves desfocados na lista cofres de chaves.

  4. Selecione Certificados.

    Captura de tela da janela portal do Azure, que mostra a página Cofres de chaves com o item Certificados realçado.

  5. Selecione Gerar/Importar.

    Captura de tela da janela portal do Azure, que mostra o painel Certificado com o item Gerar/Importar realçado.

  6. Configure os campos para Criar um certificado da seguinte maneira:

    • Método de Criação de Certificado – Geral

    • Nome do Certificado – Insira um nome para o seu certificado

    • Tipo de AC (Autoridade de Certificação) – Certificado autoassinado

    • Entidade – Um nome diferenciado X.500

    • Nomes DNS – 0 nome DNS

    • Período de Validade (em meses) – Insira a duração da validade do certificado

    • Tipo de Conteúdo – PKCS nº 12

    • Tipo de Ação de Tempo de Vida – Renovar automaticamente com um determinado percentual de tempo de vida

    • Percentual de Tempo de Vida – 80

    • Configuração de Política Avançada – Não configurado

  7. Selecione Criar. O certificado recém-criado está desabilitado por padrão. Pode levar até cinco minutos para ele ser habilitado.

  8. Selecione o certificado que você criou.

  9. Selecione Baixar no formato CER. O arquivo baixado contém a chave pública.

    Captura de tela da janela portal do Azure, que mostra o botão Baixar no formato CER realçado.

Etapa 3 – Configurar uma autenticação de certificado

  1. No aplicativo do Microsoft Entra, selecione a guia Certificados e segredos.

    Captura de tela da janela do portal do Azure, que mostra o painel de certificados e segredos para um aplicativo.

  2. Selecione Carregar certificado e carregue o arquivo .cer criado e baixado na etapa 2 deste tutorial. O arquivo .cer contém a chave pública.

Etapa 4 – Obter um certificado do Azure Key Vault

Use as identidades gerenciadas para recursos do Azure para obter o certificado do Azure Key Vault. Esse processo envolve obter o certificado .pfx que contém as chaves pública e privada.

Consulte o exemplo de código para ler o certificado no Azure Key Vault. Se você deseja usar o Visual Studio, consulte Configurar o Visual Studio para usar as identidades gerenciadas para recursos do Azure.

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));
}

Etapa 5 – Autenticar usando a entidade de serviço e um certificado

Você pode autenticar o seu aplicativo que usa uma entidade de serviço e um certificado que é armazenado no Azure Key Vault, conectando-se ao Azure Key Vault.

Para se conectar e ler o certificado no Azure Key Vault, confira o exemplo de código a seguir.

Observação

Se você já tiver um certificado criado pela sua organização, carregue o arquivo .pfx no 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();
}

Configurar o Visual Studio para usar as identidades gerenciadas para recursos do Azure

Ao criar sua solução inserida, pode ser útil configurar o Visual Studio para usar as identidades gerenciadas para recursos do Azure. As identidades gerenciadas para recursos do Azure são um recurso que você pode gerenciar a sua identidade do Microsoft Entra. Uma vez configurada, ela permitirá que o Visual Studio se autentique no seu Azure Key Vault.

Observação

O usuário que entra no Visual Studio exige permissões do Azure Key Vault para obter o certificado.

  1. Abra o projeto no Visual Studio.

  2. Selecione Ferramentas>Opções.

    Captura de tela da janela do Visual Studio, que mostra o botão Opções realçado no menu Ferramentas.

  3. Pesquise por Seleção da conta e selecione essa opção.

    Captura de tela da janela Opções do Visual Studio, que mostra a opção Seleção de Conta realçada nos resultados da pesquisa.

  4. Adicione a conta que tem acesso ao seu Azure Key Vault.