Acquérir des jetons liés à l’appareil à l’aide de WAM sur Windows

MSAL.js prend en charge l’acquisition de jetons à partir du Gestionnaire de comptes web (WAM) sur Windows. Ces jetons sont liés à l’appareil sur lequel ils ont été acquis et ne sont pas mis en cache dans le localStorage ou sessionStorage du navigateur.

Environnement pris en charge

Cette fonctionnalité est actuellement prise en charge uniquement dans l’environnement suivant :

  • Une machine exécutant une build Windows qui prend en charge la fonctionnalité (plus à venir)
  • Navigateurs Chrome et Edge ou Teams
  • l’extension Comptes Windows (version 1.0.5 ou ultérieure) doit être installée si vous utilisez Chrome ou Edge
  • L’application doit être hébergée sur https

En outre, cette fonctionnalité est actuellement uniquement prise en charge pour les comptes professionnels et scolaires

Activer la fonctionnalité dans MSAL.js

Pour activer cette fonctionnalité dans MSAL.js définissez l’indicateur allowPlatformBroker sur true dans votre objet de configuration comme suit :

const msalConfig = {
    auth: {
        clientId: "insert-clientId"
    },
    system: {
        allowPlatformBroker: true
    }
};

En outre, vous devez appeler la nouvelle API initialize et attendre qu’elle soit terminée avant d’invoquer toute autre API MSAL.js.

const pca = new PublicClientApplication(msalConfig);

// Initialize will establish a connection with the browser extension, if present
await pca.initialize();

// Call handleRedirectPromise, after initialization is complete
await pca.handleRedirectPromise();

// After initialize and handleRedirectPromise have completed, you may call any of the other APIs as you would without this feature
pca.acquireTokenSilent();

Aucune autre modification n’est nécessaire pour prendre en charge cette nouvelle fonctionnalité. Tout utilisateur accédant à votre application à partir d’un environnement pris en charge peut désormais acquérir des jetons liés à l’appareil. Les utilisateurs dans des environnements non pris en charge continueront d’acquérir des jetons via les flux web traditionnels.

Vous trouverez un exemple de travail ici

Différences lors de l’utilisation de WAM pour acquérir des jetons

Il existe quelques éléments qui peuvent se comporter un peu différemment lors de l’acquisition de jetons via WAM.

  • La configuration associée au cache s’applique uniquement au cache local de MSAL. Le répartiteur natif contrôle son propre cache, plus sécurisé, qui est utilisé au lieu du stockage du navigateur et ne prend pas en charge la configuration de son comportement de cache. Cela signifie que vous pouvez recevoir un jeton mis en cache, quelle que soit la valeur des paramètres de requête tels que : forceRefresh, cacheLookupPolicy ou storeInCache. En outre, les jetons reçus du répartiteur natif ne sont pas stockés dans le stockage local ou de session, quelle que soit la configuration sur PublicClientApplication.
  • Si WAM doit demander une interaction à l’utilisateur, une invite système s’ouvrira. Ce message semble un peu différent des fenêtres contextuelles du navigateur auxquelles vous êtes peut-être habitué.
  • Le changement de compte dans l’invite WAM n’est pas pris en charge et MSAL.js renverra une erreur (code d’erreur : user_switch) si cela se produit. Il est de la responsabilité de votre application d’intercepter cette erreur et de la gérer de manière logique pour vos scénarios (par exemple, afficher une page d’erreur, réessayer avec le nouveau compte, réessayer avec le compte d’origine, etc.)