Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft Authentication Library (MSAL) (MSAL) Node unterstützt das Anfordern von Tokens über den nativen Tokenbroker. Bei Verwendung des nativen Brokers sind Aktualisierungstoken an das Gerät gebunden, auf dem sie erworben werden und nicht von msal-node oder der Anwendung zugänglich sind. Dies bietet ein höheres Maß an Sicherheit, das allein durch msal-node nicht erreicht werden kann.
In diesem Artikel wird erläutert, wie Sie den Windows Broker konfigurieren, Besitznachweise einrichten und brokerspezifisches Verhalten verstehen.
Broker-Support ist auf den folgenden Plattformen verfügbar:
| Platform | Broker | Documentation |
|---|---|---|
| Windows | Web-Kundenbetreuer (WAM) | Windows Broker (dieser Artikel) |
| macOS | Microsoft Enterprise-SSO-Plug-In (Unternehmensportal) | macOS-Broker |
| Linux | Microsoft Single Sign-On für Linux | Linux-Broker |
Was ist ein Broker?
Ein Authentifizierungsbroker ist eine Komponente, die auf dem Computer eines Benutzers ausgeführt wird und Authentifizierungs-Handshakes und Tokenlebenszyklus für verbundene Konten verwaltet. Auf Windows wird diese Rolle von Web Account Manager (WAM) ausgeführt. Die wichtigsten Vorteile umfassen Folgendes:
- Verbesserte Sicherheit. Sicherheitsverbesserungen werden über Betriebssystem- oder Brokerupdates bereitgestellt, ohne dass App-Codeänderungen erforderlich sind. Aktualisierungstoken sind gerätegebunden und vor Exfiltration geschützt.
- Unterstützte Funktionen Zugriff auf umfangreiche Betriebssystemfunktionen wie Windows Hello, Microsoft Entra Conditional Access-Richtlinien und FIDO-Sicherheitsschlüssel (Fast Identity Online) ohne zusätzlichen Gerüstcode.
- Systemintegration. Anwendungen schließen die integrierte Kontoauswahl ein, sodass Benutzer schnell ein vorhandenes Konto auswählen können, anstatt anmeldeinformationen erneut einzugeben.
- Tokenschutz. Der Broker stellt sicher, dass Refresh-Token gerätegebunden sind, und ermöglicht Apps, Proof-of-Possession-Zugriffstoken abzurufen.
Unterstützte Architekturen
- Windows: x64, x86, ARM64
Voraussetzungen
- Node.js 18 oder höher
- Installieren Sie
@azure/msal-node-extensionsals Abhängigkeit - Registrieren Sie den Umleitungs-URI des Brokers bei Ihrer App-Registrierung. Den erforderlichen Wert finden Sie unter Umleitungs-URI.
Umleitungs-URI
Registrieren Sie den folgenden Umleitungs-URI unter der Plattform für Mobile und Desktopanwendungen im Azure-Portal:
ms-appx-web://Microsoft.AAD.BrokerPlugin/<your-client-id>
Ersetzen Sie <your-client-id> durch die Client-ID Ihrer Anwendung.
Die Funktion aktivieren
Das Aktivieren der Tokenbrokerung erfordert nur einen Konfigurationsparameter. Übergeben Sie eine NativeBrokerPlugin Instanz in der Brokerkonfiguration:
import { PublicClientApplication, Configuration } from "@azure/msal-node";
import { NativeBrokerPlugin } from "@azure/msal-node-extensions";
const msalConfig: Configuration = {
auth: {
clientId: "your-client-id",
},
broker: {
nativeBrokerPlugin: new NativeBrokerPlugin(),
},
};
const pca = new PublicClientApplication(msalConfig);
Note
msal-node führt kein Fallback auf den Flow ohne Broker im Falle eines Fehlers durch. Aktivieren Sie den Brokerfluss nur in Umgebungen, die ihn unterstützen, um unerwartete Fehler zu vermeiden.
Ein Arbeitsbeispiel finden Sie unter Beispiel „auth-code-cli-brokered-app sample”.
Fensterüberordnung
Damit Authentifizierungsaufforderungen über die aufrufende Anwendung angezeigt und weitere Interaktionen blockiert werden können, stellen Sie der API das Fensterhandle der acquireTokenInteractive Anwendung bereit.
Für CLI-Apps wird versucht, das Fensterhandle „hinter den Kulissen” zu finden, aber das ist nicht sehr zuverlässig.
Wenn Sie Electron verwenden, verwenden Sie die getNativeWindowHandle API, und übergeben Sie das Ergebnis an acquireTokenInteractive:
import { BrowserWindow } from "electron";
const win = new BrowserWindow();
const pca = new PublicClientApplication(msalConfig);
pca.acquireTokenInteractive({
windowHandle: win.getNativeWindowHandle(),
});
Proof of Possession (Besitznachweis)
Der Besitznachweis (PoP) für Zugriffstoken wird unterstützt, wenn Token über den nativen Broker abgerufen werden. Um ein PoP-Token anzufordern, fügen Sie dem Anforderungsobjekt, das an acquireTokenInteractive oder acquireTokenSilent übergeben wird, die folgenden Eigenschaften hinzu:
AT PoP-Anforderungsparameter
| Name | Description | Erforderlich |
|---|---|---|
authenticationScheme |
Gibt an, ob MSAL ein Bearer- oder PoP-Token abrufen soll. Der Standardwert ist Bearer. |
Erforderlich |
resourceRequestMethod |
Der Name der HTTP-Methode der Anforderung, die das signierte Token verwendet (GET, POST, , PUTusw.) |
Erforderlich |
resourceRequestUri |
Die URL der geschützten Ressource, für die das Zugriffstoken ausgestellt wird | Erforderlich |
shrNonce |
Ein vom Server generierter, signierter Zeitstempel, der als Zeichenfolge Base64URL-kodiert ist. Diese Nonce dient dazu, Taktverzerrungen und „Zeitreise”-Angriffe abzuwehren, die die Vorabgenerierung von PoP-Token ermöglichen sollen. | Wahlfrei |
Verwendungsbeispiel
In diesem Beispiel wird ein Besitznachweistoken angefordert, indem das Authentifizierungsschema und die signierten HTTP-Anforderungseigenschaften festgelegt werden:
import { PublicClientApplication, Configuration, AuthenticationScheme } from "@azure/msal-node";
import { NativeBrokerPlugin } from "@azure/msal-node-extensions";
const msalConfig: Configuration = {
auth: {
clientId: "your-client-id",
},
broker: {
nativeBrokerPlugin: new NativeBrokerPlugin(),
},
};
const pca = new PublicClientApplication(msalConfig);
const popTokenRequest = {
scopes: ["User.Read"],
authenticationScheme: AuthenticationScheme.POP,
resourceRequestMethod: "POST",
resourceRequestUri: "YOUR_RESOURCE_ENDPOINT",
shrNonce: "NONCE_ACQUIRED_FROM_RESOURCE_SERVER",
};
pca.acquireTokenInteractive(popTokenRequest);
pca.acquireTokenSilent(popTokenRequest);
Note
Zugriffstoken-Eigentumsnachweise werden nur über den systemeigenen Brokerflow unterstützt. Eine Unterstützung im Flow ohne Broker ist nicht vorhanden.
Unterschiede bei der Verwendung des Windows Brokers
Es gibt ein paar Dinge, die sich beim Abrufen von Token über den nativen Broker anders verhalten können:
- Der
forceRefreshParameter füracquireTokenSilentAufrufe wird nicht unterstützt. Sie erhalten möglicherweise ein zwischengespeichertes Token vom Broker, unabhängig davon, wie dieses Flag festgelegt ist. - Wenn der Broker den Benutzer zur Interaktion auffordern muss, wird eine Systemaufforderung geöffnet. Dadurch wird die Benutzeroberfläche (User Experience, UX) geändert, da die Authentifizierung nicht in einem Browserfenster auftritt.
- Der Zugriffstoken-Eigentumsnachweis wird vom Broker unterstützt, wird jedoch nicht vom Flow ohne Broker unterstützt.