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