Inserción de contenido de Power BI con entidades de servicio y un certificado

La autenticación basada en certificados le permite autenticarse mediante Microsoft Entra ID con un certificado de cliente. El certificado de cliente puede ser en un dispositivo Windows, Android o iOS, o conservarse en una instancia de Azure Key Vault.

Este método de autenticación permite administrar certificados desde una ubicación central mediante la entidad de certificación (CA), para la rotación o la revocación.

Puede obtener más información sobre los certificados en Microsoft Entra ID en la página Flujos de credenciales de cliente de GitHub.

Método

  1. Inserción del contenido con la entidad de servicio.

  2. Creación de un certificado.

  3. Configuración de la autenticación de certificado.

  4. Obtención del certificado de Azure Key Vault.

  5. Autenticación mediante la entidad de servicio y el certificado.

Paso 1: Inserción del contenido con la entidad de servicio

Para insertar el contenido con una entidad de servicio, siga las instrucciones de Inserción de contenido de Power BI con entidades de servicio y un secreto de aplicación.

Nota

Si ya tiene contenido insertado mediante una entidad de servicio, omita este paso y continúe con el paso 2.

Paso 2: Creación de un certificado

Puede adquirir un certificado de una entidad de certificación de confianza, o bien generarlo personalmente.

En esta sección se describe la creación de un certificado mediante Azure Key Vault y la descarga del archivo .cer, que contiene la clave pública.

  1. Inicie sesión en Microsoft Azure.

  2. Busque y seleccione el vínculo Almacenes de claves.

    Captura de pantalla de la ventana Azure Portal, que muestra un vínculo al servicio de almacén de claves en la lista Servicios.

  3. Seleccione el almacén de claves al que quiera agregar un certificado.

    Captura de pantalla de la ventana Azure Portal, que muestra una lista de almacenes de claves desenfocados en la lista Almacenes de claves.

  4. Seleccione Certificados.

    Captura de pantalla de la ventana Azure Portal, que muestra la página Almacenes de claves con el elemento Certificados resaltado.

  5. Seleccione Generar o importar.

    Captura de pantalla de la ventana Azure Portal, que muestra el panel Certificado con el elemento Generar e importar resaltado.

  6. Configure los campos Creación de certificado de esta forma:

    • Método de creación de certificados: General

    • Nombre del certificado: escriba un nombre para el certificado

    • Tipo de entidad de certificación (CA) : certificado autofirmado

    • Asunto: un nombre distintivo X.500

    • Nombres DNS: 0 nombres DNS

    • Período de validez (en meses) : escriba la duración de validez del certificado

    • Tipo de contenido: PKCS #12

    • Tipo de acción de duración: Renovar automáticamente cuando se llegue a un porcentaje determinado de duración

    • Porcentaje de duración: 80

    • Configuración de directiva avanzada: no configurado

  7. Seleccione Crear. El certificado recién creado está deshabilitado de forma predeterminada. Puede tardar hasta cinco minutos en habilitarse.

  8. Seleccione el certificado que ha creado.

  9. Seleccione Descargar en formato CER. El archivo descargado contiene la clave pública.

    Captura de pantalla de la ventana Azure Portal, que muestra el botón Descargar en formato CER resaltado.

Paso 3: Configuración de la autenticación de certificado

  1. En la aplicación Microsoft Entra, seleccione la pestaña Certificados y secretos.

    Captura de pantalla de la ventana Azure Portal, que muestra el panel Certificados y secretos para una aplicación.

  2. Seleccione Cargar certificado y cargue el archivo .cer que ha creado y descargado en el paso 2 de este tutorial. El archivo .cer contiene la clave pública.

Paso 4: Obtención del certificado de Azure Key Vault

Use Managed Service Identity (MSI) para obtener el certificado de Azure Key Vault. Este proceso implica obtener el certificado .pfx que contiene las claves pública y privada.

Consulte el ejemplo de código para leer el certificado desde Azure Key Vault. Si quiere usar Visual Studio, consulte Configuración de Visual Studio para usar 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;

    certificate = keyVaultClient.GetCertificateAsync($"https://{KeyVaultName}.vault.azure.net/", certName).Result;
    secret = keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier).Result;
    
    return new X509Certificate2(Convert.FromBase64String(secret.Value));
}

Paso 5: Autenticación mediante una entidad de servicio y un certificado

Puede autenticar la aplicación que usa una entidad de servicio y un certificado almacenado en Azure Key Vault mediante la conexión a Azure Key Vault.

Para conectarse y leer el certificado de Azure Key Vault, consulte la siguiente muestra de código.

Nota

Si ya tiene un certificado creado por la organización, cargue el archivo .pfx en 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();
}

Configuración de Visual Studio para usar MSI

Al crear la solución insertada, podría resultar útil configurar Visual Studio para usar Managed Service Identity (MSI). MSI es una característica que le permite administrar su identidad de Microsoft Entra. Una vez que se ha configurado, permitirá que Visual Studio se autentique en la instancia de Azure Key Vault.

Nota

El usuario que inicie sesión en Visual Studio requerirá permisos de Azure Key Vault para obtener el certificado.

  1. Abra el proyecto en Visual Studio.

  2. Seleccione Herramientas>Opciones.

    Captura de pantalla de la ventana de Visual Studio, que muestra el botón Opciones resaltado en el menú Herramientas.

  3. Busque y seleccione Selección de cuenta.

    Captura de pantalla de la ventana Opciones de Visual Studio, que muestra la opción Selección de cuentas resaltada en los resultados de búsqueda.

  4. Agregue la cuenta que tenga acceso a la instancia de Azure Key Vault.