Windowsで WAM を使用してデバイス バインド トークンを取得する

MSAL.js では、Windows上の Web アカウント マネージャー (WAM) からトークンを取得できます。 これらのトークンは、取得されたデバイスにバインドされ、ブラウザーの localStorage または sessionStorage にキャッシュされません。

サポートされている環境

この機能は現在、次の環境でのみサポートされています。

  • この機能をサポートするWindows ビルドを実行しているマシン (詳細については、この記事を参照してください)
  • Chrome または Edge ブラウザー、または Teams
  • Chrome または Edge を使用している場合は、Windows アカウント拡張機能 (バージョン 1.0.5 以降) がインストールされます
  • アプリは https 上でホストされている必要があります

さらに、この機能は現在、職場および学校アカウントでのみサポートされています

MSAL.js で機能を有効にする

MSAL.js でこの機能を有効にするには、次のように構成オブジェクトで allowPlatformBroker フラグを true に設定します。

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

さらに、他の MSAL.js API を呼び出す前に、新しい initialize API を呼び出して待機する必要があります。

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();

この新機能をサポートするために、他の変更は必要ありません。 サポートされている環境からアプリにアクセスするすべてのユーザーは、デバイスバインドトークンを取得できるようになります。 サポートされていない環境のユーザーは、従来の Web ベースのフローを通じて引き続きトークンを取得します。

作業サンプルについては、こちらを参照してください

WAM を使用してトークンを取得するときの違い

WAM を使用してトークンを取得する場合、動作が少し異なる場合があります。

  • すべてのキャッシュ関連の構成は、MSAL のローカル キャッシュにのみ適用されます。 ネイティブ ブローカーは、ブラウザー ストレージの代わりに使用される独自の、より安全なキャッシュを制御し、そのキャッシュ動作の構成をサポートしていません。 つまり、 forceRefreshcacheLookupPolicystoreInCacheなどの要求パラメーターの値に関係なく、キャッシュされたトークンを受け取る可能性があります。 さらに、ネイティブ ブローカーから受信したトークンは、PublicClientApplication で構成した内容に関係なく、ローカルまたはセッション ストレージに格納 されません
  • WAM がユーザーに対話を求める必要がある場合は、システム プロンプトが開きます。 このプロンプトは、使い慣れたブラウザー ポップアップ ウィンドウとは少し異なります。
  • WAM プロンプトでアカウントを切り替えることはサポートされておらず、この場合、MSAL.js はエラー (エラー コード: user_switch) をスローします。 このエラーをキャッチし、シナリオに適した方法で処理するのはアプリの責任です (たとえば、エラー ページの表示、新しいアカウントでの再試行、元のアカウントでの再試行など)。