Compartilhar via


API de autenticação

A API de Autenticação permite que os visuais obtenham tokens de acesso do Microsoft Entra ID (anteriormente conhecido como Azure AD) para usuários conectados, facilitando a autenticação de logon único.

Os administradores do Power BI podem habilitar ou desabilitar a API por meio de um comutador global. A configuração padrão bloqueia (desabilita) a API.

A API é aplicável somente para visuais do AppSource e não para visuais privados. Os visuais que estão em desenvolvimento podem ser testados no modo de depuração antes de serem publicados.

Ambientes compatíveis

Os ambientes a seguir são suportados:

  • Web
  • Área de trabalho
  • Desktop do RS
  • Dispositivos móveis

Ambientes sem suporte

Os seguintes ambientes ainda não têm suporte:

  • Serviço do RS
  • Análise integrada
  • Teams

Como usar a API de Autenticação

No arquivo capabilities.json, adicione o privilégio "AADAuthentication" com o URI do aplicativo registrado do Microsoft Entra ID. O Fabric gera um token de acordo com o público-alvo configurado para a nuvem atual e o entrega ao visual.
Em seguida, o visual pode utilizar o token para autenticar-se no respectivo público-alvo, representando seu serviço de back-end:

"privileges": [
    {
        "name": "AADAuthentication",
        "parameters": {
            "COM": "https://contoso.com",
            "CN": "https://contoso.cn"
        }
    }
]

No arquivo pbiviz.json, defina a versão da API como 5.9.1 ou superior:

O AcquireAADTokenService recém-exposto contém dois métodos:

  • acquireAADToken: retorna um conteúdo de token de autenticação do tipo AcquireAADTokenResult para o visual ou nulo se não puder ser buscado.

     /**
     * Enum representing the various clouds supported by the Authentication API.
     */
    export const enum CloudName {
        COM = "COM",         // Commercial Cloud
        CN = "CN",           // China Cloud
        GCC = "GCC",         // US Government Community Cloud
        GCCHIGH = "GCCHIGH", // US Government Community Cloud High
        DOD = "DOD",         // US Department of Defense Cloud
    }
    
    /**
     * Interface representing information about the user associated with the token.
     */
    export interface AcquireAADTokenUserInfo {
        userId?: string;   // Unique identifier for the user
        tenantId?: string; // Unique identifier for the tenant
    }
    
    /**
     * Interface representing information about the fabric environment.
     */
    export interface AcquireAADTokenFabricInfo {
        cloudName?: CloudName; // Name of the cloud environment
    }
    
    /**
     * Interface representing the result of acquiring a Microsoft Entra ID token.
     */
    export interface AcquireAADTokenResult {
        accessToken?: string;       // Access token issued by Microsoft Entra ID
        expiresOn?: number;         // Expiration time of the access token
        userInfo?: AcquireAADTokenUserInfo;     // Information about the user associated with the token
        fabricInfo?: AcquireAADTokenFabricInfo; // Information about the fabric environment
    }
    
  • acquireAADTokenstatus: retorna um dos seguintes status de privilégio associados à aquisição do token.

    • Allowed: o privilégio é permitido no ambiente atual.
    • NotDeclared: a declaração de privilégio está ausente na seção de recursos visuais.
    • NotSupported: o privilégio não tem suporte no ambiente atual.
    • DisabledByAdmin: o administrador do Fabric negou o uso de privilégios.

O código de exemplo a seguir demonstra como adquirir um token do Microsoft Entra ID usando a API:

    // Step 1: Check the status of AAD token acquisition 
    const acquireTokenStatus = await this.acquireAADTokenService.acquireAADTokenstatus(); 

    // Step 2: Verify if acquiring the token is allowed 
    if (acquireTokenStatus === PrivilegeStatus.Allowed) { 

       // Step 3: Acquire the Microsoft Entra ID token
       const acquireAADTokenResult: AcquireAADTokenResult = await this.acquireAADTokenService.acquireAADToken(); 

       // Step 4: Confirm successful acquisition of the access token
       if (acquireAADTokenResult.accessToken) { 

            // Step 5: Call your backend API with the obtained token 
        } 
    } 

    // Step 6: Handle unsuccessful AAD token acquisition 

Considerações e limitações

A aquisição de token será bloqueada se qualquer uma das seguintes condições se aplicar

  • O comutador do locatário está desativado.

  • O usuário não está conectado (no desktop).

  • O ISV não pré-autorizou o aplicativo do Power BI.

  • O formato do parâmetro de privilégio AADAuthentication é inválido.

  • O visual não é aprovado publicamente ou não é um visual de depuração.

  • O serviço de back-end do visual, configurado como o público-alvo pelo visual, não tem consentimentos apropriados para a API do Graph no locatário do consumidor usando o visual. Para obter mais informações sobre consentimentos, consulte consentimento do administrador do locatário.

Configuração do aplicativo Microsoft Entra ID