Authentification pour les applications Fabric

Fabric Apps inclut un service d’authentification intégré qui connecte les utilisateurs, gère leurs sessions et attache leur identité à chaque appel de données et de stockage que votre application effectue. Cet article explique les concepts à comprendre avant de configurer l’authentification pour votre projet.

Pour plus d’informations sur l’implémentation, consultez :

Modes d’authentification

Les applications Fabric déployées s’authentifient avec Microsoft Entra ID. Choisissez le chemin d’intégration en fonction de l’endroit où l’application s’exécute et de qui acquiert le jeton Entra :

Environnement Méthode prise en charge Quand l′utiliser ?
Application navigateur utilisant le portail Fabric Fenêtre contextuelle Fabric SSO ou relais intégré Laissez Fabric se connecter de manière interactive, ou connectez-vous à une application intégrée dans Fabric.
Navigateur ou Node.js application qui possède déjà un jeton Entra délégué signInWithEntraToken() Échangez le jeton fourni contre une session Rayfin sans fenêtre popup ni redirection.
Application intégrée dans un portail hôte externe createEmbedHost() Dans le parent et initEmbeddedAuth() dans l’iFrame Laissez un courtier parent authentifié par Entra et de confiance assurer le relais sans envoyer son jeton à l’iframe.
Développement local avec un backend local E-mail et mot de passe Tester sur un backend local ; cette méthode ne fonctionne pas sur un backend Fabric déployé.

Concepts clés :

  • Fabric SSO utilise le portail Fabric pour authentifier un utilisateur du navigateur. L’application peut s’exécuter dans Fabric ou utiliser une fenêtre pop-up provenant d’une page autonome, incluant une interface locale ciblant un backend déployé.
  • L’échange Entra direct et le transfert external-parent-host sont des parcours Microsoft Entra supplémentaires, et non une prise en charge de fournisseurs d’identité arbitraires ni la connexion avec principal de service uniquement applicatif.
  • Le courrier électronique et le mot de passe sont destinés au développement local uniquement. Elle ne fonctionne pas après le déploiement.
  • La connexion à la première fois approvisionne l’utilisateur. Avec Fabric authentification unique, il n'existe aucune étape d'inscription distincte : les utilisateurs sont créés automatiquement la première fois qu'ils se connectent.
  • L’authentification est requise pour les déploiements Fabric. Définir services.auth.enabled sur false entraîne l’échec de npx rayfin up.

Pour les besoins en jetons et des exemples d’implémentation, voir connexion avec jeton Direct Entra et intégrer dans un portail parent externe.

Sessions et identité

Une fois qu’un utilisateur se connecte, le Kit de développement logiciel (SDK) crée une session qui représente l’utilisateur connecté. Les sessions sont opaques : votre application ne doit pas inspecter les jetons sous-jacents. Au lieu de cela, votre application lit un petit ensemble de propriétés de haut niveau :

  • Indique si une session est actuellement authentifiée.
  • L’utilisateur id et email.
  • Les revendications personnalisées que vous avez configurées dans rayfin.yml.

La même instance cliente qui connecte automatiquement l’utilisateur associe également son identité à chaque appel aux services de données et de stockage. Vous ne transmettez pas de jetons manuellement.

Les sessions déclenchent également des événements de modification, ce qui permet à votre interface utilisateur de réagir lorsqu’un utilisateur se connecte ou se déconnecte sans recharger la page.

Pour les intégrations côté serveur, utilisez un client séparé et une session Auth en mémoire uniquement par utilisateur (authStorage: false sur RayfinClient, ou { storage: false } sur Auth). Ne partagez jamais un client connecté mutable entre utilisateurs. Détruisez l’instance auth lorsque sa requête ou son scope utilisateur spécifique prend fin.

Activer l’authentification dans votre projet

L’authentification est configurée dans rayfin/rayfin.yml. L’exemple suivant active l’authentification unique Fabric (pour les applications déployées) et la connexion par e-mail/mot de passe (pour le développement local) :

services:
  auth:
    enabled: true
    allowedRedirectUris:
      - http://localhost:5173
    fabric:
      enabled: true
      externalEntraExchange: true
    password:
      enabled: true  # Local development only

Ce que contrôle chaque paramètre :

  • services.auth.enabled : active le service d’authentification. Obligatoire pour tout déploiement Fabric.
  • allowedRedirectUris : origines autorisées à recevoir l’utilisateur après la connexion. Ajoutez ici votre URL de développement locale. npx rayfin up ajoute automatiquement l’origine de l’application déployée.
  • fabric.enabled : active l’authentification unique Fabric. Obligatoire pour les applications déployées.
  • fabric.externalEntraExchange – Permet l’échange direct de jetons Entra par délégation et le transfert au parent hôte externe. L’environnement Fabric cible doit également soutenir l’échange.
  • password.enabled : active la connexion par e-mail et mot de passe pour le développement local.

Important

Les déploiements Fabric nécessitent que l’authentification soit activée. npx rayfin up échoue quand services.auth.enabled est défini sur false.

Après modification rayfin.yml, redémarrez le back-end local ou exécutez-le npx rayfin up pour appliquer la modification.

Prérequis pour les jetons Microsoft Entra obtenus en externe

L'échange direct et l'authentification parent-hôte externe nécessitent un jeton utilisateur délégué pour l'audience Fabric/Power BI acceptée par le déploiement cible, avec Item.Execute.All, émis dans le locataire propriétaire de l'élément. L’utilisateur doit également avoir la permission Exécuter sur l’élément de l’application. Les jetons uniquement pour applications ne sont pas pris en charge par ces chemins de connexion.

Votre bibliothèque d’identité acquiert le jeton et gère le consentement. Le SDK Rayfin l’échange contre une session Rayfin ; il n’acquiert pas le jeton Entra. Les appelants navigateurs ont également besoin de la politique CORS du service qui autorise l’origine et l’en-tête d’autorisation.

Revendications personnalisées

Les revendications personnalisées vous permettent d’attacher des métadonnées spécifiques à l’application à chaque session, par exemple, un nom de locataire, un indicateur de fonctionnalité ou une version d’application. Ils sont utiles pour le contrôle d’accès basé sur les rôles et l’activation sélective de fonctionnalités, sans modifier votre modèle de données.

services:
  auth:
    enabled: true
    customClaims:
      tenant: default
      app_version: 1.0.0

Les revendications personnalisées apparaissent à l’intérieur de l’objet de session et peuvent être référencées à partir de vos règles d’autorisation de données.

Ce que fournit le Kit de développement logiciel (SDK)

Lorsque vous utilisez le RayfinClient, le service d’authentification est disponible sur client.auth. Au niveau conceptuel, il fournit les éléments suivants :

  • Inscrivez-vous et connectez-vous avec un e-mail et un mot de passe pendant le développement local.
  • Connexion et inscription via l’authentification unique Fabric pour les applications déployées. Le même appel gère les utilisateurs nouveaux et retournés.
  • Échange direct de jetons Entra délégués dans le navigateur ou dans le code Node.js, ainsi qu’un transfert vers un hôte parent externe approuvé pour les applications intégrées.
  • Déconnectez-vous pour terminer la session active.
  • Lecture de la session et abonnements afin que votre interface utilisateur reste synchronisée avec l’état d’authentification de l’utilisateur.

Pour le code qui relie ces fonctionnalités à une application réelle, voir Configurer l’authentification SSO Fabric pour votre application Fabric. Pour les indications sur la liste de permis de rappel et de transfert, voir Configurer les URI de redirection d’authentification.