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.
Beim Erstellen von Anwendungen mit dem Model Context Protocol (MCP) können Sie MSAL Node so konfigurieren, dass ressourcenbezogener Tokenerwerb und Caching erzwungen werden. Wenn der MCP-Modus aktiviert ist, verlangt MSAL, dass jede Tokenanforderung einen resource-Parameter enthält, und speichert Zugriffstoken unter Verwendung dieser Ressource als Schlüssel im Cache.
Note
MCP-Flüsse sind nur für öffentliche Clientanwendungen verfügbar.
Voraussetzungen
- Registrieren einer Anwendung bei Microsoft Identity Platform
- Eine Anwendung, die als öffentlicher Client konfiguriert ist (z. B. eine Desktop- oder CLI-Anwendung)
-
@azure/msal-nodev5 oder höher in Ihrem Projekt installiert
AKTIVIEREN des MCP-Modus
Legen Sie isMcp: true in der auth-Konfiguration fest, wenn Sie Ihr PublicClientApplication erstellen:
const config = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(config);
Einschließen des Ressourcenparameters
Wenn isMcp auf true gesetzt ist, muss jede Tokenanforderung den Parameter resource enthalten. Wenn sie weggelassen wird, wird ein resource_parameter_required Fehler ausgelöst.
const tokenRequest = {
scopes: ["User.Read"],
redirectUri: "http://localhost:3000/redirect",
resource: "https://example.microsoft.com",
code: authorizationCode,
};
const response = await pca.acquireTokenByCode(tokenRequest);
Important
Legen Sie den resource Parameter direkt für das Anforderungsobjekt fest. Übergeben Sie sie nicht über extraQueryParameters gleichzeitig mit der resource-Eigenschaft — andernfalls wird ein misplaced_resource_parameter-Fehler ausgelöst.
Das folgende Beispiel zeigt die richtigen und falschen Methoden zum Festlegen des resource Parameters:
// Correct — resource on the request object
const request = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
};
// Wrong — resource in both locations
const request = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
extraQueryParameters: { resource: "https://example.microsoft.com" },
};
Ressourcenbezogenes Caching
Wenn isMcp diese Option aktiviert ist, werden Zugriffstoken mit ihrer zugeordneten Ressource zwischengespeichert. Dies wirkt sich auf den stillen Tokenabruf aus:
- Cachetreffer: Wenn ein zwischengespeichertes Zugriffstoken für dieselben Bereiche und Ressourcen vorhanden ist, wird es aus dem Cache zurückgegeben.
- Cachefehler: Wenn die angeforderte Ressource keinem zwischengespeicherten Token entspricht, greift MSAL auf das Netzwerk zurück, um ein neues Token für die angeforderte Ressource abzurufen.
const msalTokenCache = pca.getTokenCache();
const accounts = await msalTokenCache.getAllAccounts();
// First request — acquires token from network
const token1 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-a.microsoft.com",
account: accounts[0],
});
// Same resource — returns cached token
const token2 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-a.microsoft.com",
account: accounts[0],
});
// Different resource — falls back to network
const token3 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-b.microsoft.com",
account: accounts[0],
});
Fehlerbehandlung
Zwei Fehler sind für MCP-Flüsse spezifisch:
| Fehlercode | Description |
|---|---|
resource_parameter_required |
isMcp ist true, aber die Anfrage enthält keinen Parameter resource. |
misplaced_resource_parameter |
Ein resource wurde sowohl in der resource-Eigenschaft als auch in extraQueryParameters gefunden. Verwenden Sie nur eine. |
Beide Fehler werden als ClientAuthError ausgegeben. Weitere Informationen finden Sie in den häufig gestellten Fragen zu MSAL-Knoten.
Beispiele
- MCP Flows-Beispiel – Express-App, die MCP mit Autorisierungscode und unbeaufsichtigten Flüssen demonstriert.