Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du skapar Model Context Protocol (MCP)-program kan du konfigurera MSAL Node så att resursavgränsad tokeninhämtning och cachelagring tillämpas. När MCP-läget är aktiverat kräver MSAL att varje tokenbegäran innehåller en resource parameter och cachelagrar åtkomsttoken som är nyckelade av den resursen.
Note
MCP-flöden är endast tillgängliga för offentliga klientprogram.
Förutsättningar
- Registrera ett program med Microsofts identitetsplattform
- Ett program som konfigurerats som en offentlig klient (till exempel ett skrivbords- eller CLI-program)
-
@azure/msal-nodev5 eller senare installerat i projektet
Aktivera MCP-läge
Ange isMcp: true i konfigurationen auth när du skapar :PublicClientApplication
const config = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(config);
Inkludera resursparametern
När isMcp är truemåste varje tokenbegäran innehålla en resource parameter. Om du utelämnar det utlöser det ett resource_parameter_required fel.
const tokenRequest = {
scopes: ["User.Read"],
redirectUri: "http://localhost:3000/redirect",
resource: "https://example.microsoft.com",
code: authorizationCode,
};
const response = await pca.acquireTokenByCode(tokenRequest);
Important
Ange parametern resource direkt på begärandeobjektet. Skicka inte den via extraQueryParameters samtidigt som egenskapen resource — då utlöses ett misplaced_resource_parameter-fel.
I följande exempel visas rätt och felaktiga sätt att ange parametern resource :
// 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" },
};
Resursbegränsad cachelagring
När isMcp är aktiverat cachelagras åtkomsttoken tillsammans med den resurs de är associerade med. Detta påverkar tyst tokenförvärv:
- Cacheträff: Om det finns en cachelagrad åtkomsttoken för samma scope och resurs, returneras den från cachen.
- Cachemiss: Om den begärda resursen inte matchar någon cachelagrad token återgår MSAL till nätverket för att hämta en ny token för den begärda resursen.
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],
});
Felhantering
Två fel är specifika för MCP-flöden:
| Felkod | Description |
|---|---|
resource_parameter_required |
isMcp är true, men begäran innehåller ingen resource-parameter. |
misplaced_resource_parameter |
En resource hittades både i egenskapen resource och i extraQueryParameters. Använd bara en. |
Båda felen kastas som ClientAuthError. Mer information finns i vanliga frågor och svar om MSAL Node.
Samples
- MCP-flödesexempel – Express-app som demonstrerar MCP med auktoriseringskod och tysta flöden.