Verwenden von MSAL Node mit dem macOS-Broker

Microsoft Authentication Library (MSAL) (MSAL) Node kann den macOS-Authentifizierungsbroker verwenden, um einmaliges Anmelden (Single Sign-On, SSO) und sichere Tokenakquisition mithilfe von Konten bereitzustellen, die dem Betriebssystem bekannt sind. In diesem Artikel wird der macOS-Broker erläutert und erläutert, wie Sie die brokerierte Authentifizierung in MSAL Node aktivieren und verwenden.

Eine Übersicht über die Brokerunterstützung auf allen Plattformen finden Sie unter Verwenden des MSAL-Knotens mit dem nativen Tokenbroker.

Was ist der macOS-Broker

Unter macOS wird der Authentifizierungsbroker vom Microsoft Enterprise-SSO-Plug-In für Apple-Geräte bereitgestellt, das mit der Unternehmensportal-App ausgeliefert wird. Der Broker verwaltet die Authentifizierungs-Handshakes und den Tokenlebenszyklus für verbundene Konten. Die wichtigsten Vorteile umfassen Folgendes:

  • Verbesserte Sicherheit. Sicherheitsverbesserungen werden über Brokerupdates bereitgestellt, ohne dass App-Codeänderungen erforderlich sind. Aktualisierungstoken sind gerätegebunden und vor Exfiltration geschützt.
  • Systemintegration. Benutzer können vorhandene angemeldete Konten aus Unternehmensportal wiederverwenden, wodurch die erneute Eingabe von Anmeldeinformationen reduziert wird.
  • Tokenschutz. Der Broker stellt sicher, dass Aktualisierungstoken an den Gerätekontext gebunden sind.

Unterstützte Plattformen und Architekturen

Bestandteil Unterstützt
Architektur ARM64 (Apple Silicon) und x64 (Intel)
macOS-Version macOS 10.15 (Catalina) und höher

Tip

Es wird empfohlen, auf die neueste macOS-Version zu aktualisieren, um die Kompatibilität mit den neuesten Sicherheitsfeatures und Brokerfunktionen sicherzustellen.

Voraussetzungen

  • Node.js 18 oder höher
  • Installieren Sie @azure/msal-node-extensions als Abhängigkeit
  • Das Gerät muss über Unternehmensportal registriert werden. Überprüfen Sie nach der Registrierung, ob sich andere Microsoft-Apps über die SSO-Erweiterung anmelden können (z. B. können Sie sich über Unternehmensportal bei Word anmelden).
  • Registrieren Sie die Broker-Umleitungs-URI bei Ihrer App-Registrierung. Die unterstützten URI-Werte finden Sie unter Umleitungs-URI.

Umleitungs-URI

Für macOS-Brokerflüsse müssen Sie einen plattformspezifischen Umleitungs-URI unter der Plattform für Mobile und Desktopanwendungen im Azure-Portal registrieren.

Für nicht signierte Anwendungen (Skripts, CLI-Tools):

Verwenden Sie den folgenden Umleitungs-URI für nicht signierte Anwendungen, z. B. Skripts und CLI-Tools:

msauth.com.msauth.unsignedapp://auth

Für signierte/gebündelte Anwendungen:

Verwenden Sie das folgende Umleitungs-URI-Format für signierte oder gebündelte Anwendungen:

msauth.<your-bundle-id>://auth

Ersetzen Sie <your-bundle-id> durch die Apple-Bundle-ID Ihrer Anwendung (z. B. msauth.com.example.myapp://auth).

Important

Der Brokerumleitungs-URI sollte nur für Brokerflüsse verwendet werden. Wenn Ihre Anwendung auch browserbasierte Authentifizierungsflüsse verwendet, verwenden Sie einen separaten Umleitungs-URI für diese. Die Angabe der Broker-Umleitungs-URI in einem browserbasierten Ablauf führt zu einem Fehler.

Die Funktion aktivieren

Für das Aktivieren des macOS-Brokers ist dieselbe Konfiguration wie Windows erforderlich. Ü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 wechselt nicht zu einem browserbasierten Ablauf, wenn der Broker nicht verfügbar ist. Aktivieren Sie nur die vermittelte Authentifizierung in Umgebungen, die den Broker unterstützen, um unerwartete Fehler zu vermeiden.

Token beziehen

Interaktive Tokenerfassung

Verwenden Sie acquireTokenInteractive, um ein Token über den macOS-Broker anzufordern:

const tokenRequest = {
    scopes: ["User.Read"],
};

const result = await pca.acquireTokenInteractive(tokenRequest);
console.log("Access token:", result.accessToken);

Automatischer Tokenerwerb

Nach einer ersten interaktiven Anmeldung können nachfolgende Tokenanforderungen ohne Benutzerinteraktion erfolgen:

const accounts = await pca.getAllAccounts();

if (accounts.length > 0) {
    const silentRequest = {
        scopes: ["User.Read"],
        account: accounts[0],
    };

    const result = await pca.acquireTokenSilent(silentRequest);
    console.log("Access token (silent):", result.accessToken);
}

Zwischenspeichern von Tokens

Der Authentifizierungsbroker verarbeitet das Zwischenspeichern von Aktualisierungs- und Zugriffstoken. Token, die über den Broker erworben werden, werden vom Broker selbst verwaltet und sind gerätegebunden. Sie müssen bei Verwendung des Brokers keine benutzerdefinierte Zwischenspeicherung einrichten.

Unterschiede bei der Verwendung des macOS-Brokers

  • Wenn der Broker zur Eingabe einer Interaktion aufgefordert werden muss, wird ein systemeigenes MacOS-Authentifizierungsdialogfeld angezeigt. Dadurch wird die Benutzeroberfläche (User Experience, UX) im Vergleich zur browserbasierten Authentifizierung geändert.
  • Der Parameter forceRefresh für acquireTokenSilent wird nicht unterstützt. Sie können unabhängig von dieser Kennzeichnung ein zwischengespeichertes Token vom Broker erhalten.
  • Der Besitznachweis (PoP) für Zugriffstoken wird über den Broker unterstützt.

Einschränkungen

  • Azure AD B2C- und Active Directory-Verbunddienste (AD FS) (AD FS)-Autoritäten werden über den Broker unter macOS nicht unterstützt.
  • Identitätsanbieter von Drittanbietern (IDPs) werden nicht unterstützt.
  • Unternehmensportal muss installiert sein, und das Gerät muss registriert sein, damit der Broker funktioniert.
  • msal-node greift nicht auf einen Browser zurück, wenn der Broker nicht verfügbar ist. Aktivieren Sie den Broker nur in Umgebungen, die ihn unterstützen.