Uzyskiwanie tokenów powiązanych z urządzeniem za pomocą WAM na platformie Windows

MSAL.js obsługuje uzyskiwanie tokenów z Menedżera kont sieci Web (WAM) w Windows. Te tokeny są powiązane z urządzeniem, na którym zostały uzyskane, i nie są przechowywane w pamięci podręcznej przeglądarki localStorage ani sessionStorage.

Obsługiwane środowisko

Ta funkcja jest obecnie obsługiwana tylko w następującym środowisku:

  • Maszyna z uruchomioną kompilacją Windows, która obsługuje tę funkcję (więcej informacji na ten temat)
  • Przeglądarki Chrome i Edge lub Teams
  • rozszerzenie Windows Accounts (wersja 1.0.5 lub nowsza) jest zainstalowane w przypadku korzystania z przeglądarki Chrome lub Edge
  • Aplikacja musi być hostowana w usłudze https

Ponadto ta funkcja jest obecnie obsługiwana tylko dla kont służbowych i szkolnych

Włączanie funkcji w MSAL.js

Aby włączyć tę funkcję w MSAL.js ustaw flagę allowPlatformBroker na true w obiekcie konfiguracji w następujący sposób:

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

Ponadto przed wywołaniem jakiegokolwiek innego interfejsu API biblioteki MSAL.js należy wywołać nowy interfejs API initialize i zaczekać na zakończenie jego działania.

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

Do obsługi tej nowej funkcji nie są potrzebne żadne inne zmiany. Każdy użytkownik, który uzyskuje dostęp do aplikacji z obsługiwanego środowiska, będzie teraz mógł uzyskać tokeny powiązane z urządzeniem. Użytkownicy w nieobsługiwanych środowiskach będą nadal pozyskiwać tokeny za pośrednictwem tradycyjnych przepływów opartych na sieci Web.

Przykład roboczy można znaleźć tutaj

Różnice w przypadku używania WAM do uzyskiwania tokenów

Istnieje kilka rzeczy, które mogą zachowywać się nieco inaczej podczas uzyskiwania tokenów za pośrednictwem WAM.

  • Cała konfiguracja związana z pamięcią podręczną ma zastosowanie tylko do lokalnej pamięci podręcznej biblioteki MSAL. Natywny broker zarządza własną, bezpieczniejszą pamięcią podręczną, która jest używana zamiast pamięci masowej przeglądarki, i nie obsługuje konfiguracji sposobu działania tej pamięci podręcznej. Oznacza to, że możesz otrzymać buforowany token niezależnie od wartości parametrów żądania, takich jak: forceRefresh, cacheLookupPolicy lub storeInCache. Ponadto tokeny odebrane z brokera natywnego nie są przechowywane w magazynie lokalnym lub sesji niezależnie od tego, co zostało skonfigurowane w usłudze PublicClientApplication.
  • Jeśli WAM musi monitować użytkownika o interakcję, zostanie otwarty monit systemowy. Ten komunikat wygląda nieco inaczej niż wyskakujące okna przeglądarki, do których możesz być przyzwyczajony(-a).
  • Przełączanie konta w monicie WAM nie jest obsługiwane, a biblioteka MSAL.js zgłosi błąd (kod błędu: user_switch), jeśli do tego dojdzie. To aplikacja odpowiada za przechwycenie tego błędu i obsłużenie go w sposób odpowiedni dla Twoich scenariuszy użycia (np. wyświetlić stronę błędu, ponowić próbę z użyciem nowego konta, ponowić próbę z użyciem oryginalnego konta itp.)