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
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.
Entre no Microsoft Azure.
Procure e selecione o link Key vaults.
Selecione o cofre de chaves ao qual deseja adicionar um certificado.
Selecione Certificados.
Selecione Gerar/Importar.
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
Selecione Criar. O certificado recém-criado está desabilitado por padrão. Pode levar até cinco minutos para ele ser habilitado.
Selecione o certificado que você criou.
Selecione Baixar no formato CER. O arquivo baixado contém a chave pública.
Etapa 3 – Configurar uma autenticação de certificado
No aplicativo do Microsoft Entra, selecione a guia Certificados e segredos.
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.
Abra o projeto no Visual Studio.
Selecione Ferramentas>Opções.
Pesquise por Seleção da conta e selecione essa opção.
Adicione a conta que tem acesso ao seu Azure Key Vault.