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.
Model Context Protocol (MCP) är en öppen standard som gör att AI-program kan ansluta säkert med externa verktyg, datakällor och tjänster. MSAL Browser stöder MCP-flöden genom att framtvinga att alla tokenbegäranden innehåller en resource parameter och cachelagring av åtkomsttoken som är nyckelade av den resursen.
Note
MCP-flöden stöds för både vanliga webbläsarprogram med hjälp av PublicClientApplication och NAA-program (Kapslad appautentisering) med .createNestablePublicClientApplication
Information om implementeringar på serversidan finns i MSAL Node MCP-flöden.
Förutsättningar
- Registrera ett program med Microsofts identitetsplattform
-
@azure/msal-browserv5 eller senare installerat i projektet
Aktivera MCP
Ange isMcp: true i konfigurationen auth när du skapar :PublicClientApplication
const msalConfig = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(msalConfig);
För NAA-program använder du samma konfiguration med createNestablePublicClientApplication:
const pca = await msal.createNestablePublicClientApplication(msalConfig);
Parameter för resurs
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"],
resource: "https://example.microsoft.com",
};
Important
Ange parametern resource direkt på begärandeobjektet. Skicka den inte via extraQueryParameters eller extraParameters samtidigt med egenskapen resource – det orsakar ett misplaced_resource_parameter-fel.
I följande exempel visas rätt och felaktiga sätt att ange parametern resource :
// Correct
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. Det här beteendet påverkar tyst tokenhämtning:
- Cacheträff: Om det finns en cachelagrad åtkomsttoken för samma omfång 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.
// First request — acquires token from network
const token1 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-a.microsoft.com",
account: account,
});
// Same resource — returns cached token
const token2 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-a.microsoft.com",
account: account,
});
// Different resource — falls back to network
const token3 = await pca.acquireTokenSilent({
scopes: ["User.Read"],
resource: "https://resource-b.microsoft.com",
account: account,
});
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 eller extraParameters. Använd bara en. |
Båda felen kastas som ClientAuthError. Mer information finns i dokumentationen om fel.