Partager via


API d’authentification

L’API d’authentification permet aux visuels d’obtenir des jetons d’accès Microsoft Entra ID (anciennement Azure AD) pour les utilisateurs connectés, ce qui facilite l’authentification par authentification unique.

Les administrateurs Power BI peuvent activer ou désactiver l’API via un commutateur global. Les paramètres par défaut bloquent (désactivent) l’API.

L’API s’applique uniquement aux visuels AppSource et non aux visuels privés. Les visuels en cours de développement peuvent être testés en mode débogage avant leur publication.

Environnements pris en charge

Les environnements suivants sont pris en charge :

  • web
  • Bureau
  • Bureau RS
  • Applications mobiles

Environnements non pris en charge

Les environnements suivants ne sont pas encore pris en charge :

  • Service RS
  • Analytique incorporée
  • Teams

Comment utiliser l’API d’authentification

Dans le fichier capabilities.json, ajoutez le privilège « AADAuthentication » avec un URI d’application enregistré Microsoft Entra ID pour chaque cloud pris en charge. Fabric génère un jeton en fonction de l’audience configurée pour le cloud actuel et le remet au visuel.
Le visuel peut ensuite utiliser le jeton pour s’authentifier auprès de l’audience respective, représentant son service principal :

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

Dans le fichier pbiviz.json, définissez la version d’API sur 5.9.1 ou ultérieure :

AcquireAADTokenService nouvellement exposé contient deux méthodes :

  • acquireAADToken : renvoie une charge utile de jeton d’authentification de type AcquireAADTokenResult pour le visuel ou la valeur nulle en cas d’extraction impossible.

     /**
     * 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 : retourne l’un des états de privilège suivants associés à l’acquisition du jeton.

    • Allowed : le privilège est autorisé dans l’environnement actuel.
    • NotDeclared : la déclaration de privilège est manquante dans la section des fonctionnalités visuelles.
    • NotSupported : le privilège n’est pas pris en charge dans l’environnement actuel.
    • DisabledByAdmin : l’administrateur Fabric a refusé l’utilisation des privilèges.

L’exemple de code suivant montre comment acquérir un jeton Microsoft Entra ID à l’aide de l’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 

Observations et limitations

L’acquisition de jetons est bloquée si l’une des conditions suivantes s’applique :

  • Le commutateur de locataire est désactivé.

  • L’utilisateur n’est pas connecté (dans Desktop).

  • Le fournisseur de logiciel indépendant (ISV) n’a pas autorisé l’application Power BI au préalable.

  • Le format du paramètre de privilège AADAuthentication n’est pas valide.

  • Le visuel n’est pas approuvé publiquement ou n’est pas un visuel de débogage.

  • Le service principal du visuel, configuré en tant qu’audience par le visuel, ne dispose pas des consentements appropriés pour l’API Graph dans le locataire consommateur à l’aide du visuel. Pour plus d’informations sur le consentement, consultez le consentement de l’administrateur client.

Configuration de l’application Microsoft Entra ID