Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Při vytváření aplikací Model Context Protocol (MCP) můžete nakonfigurovat MSAL Node tak, aby vynucoval získávání tokenů s rozsahem omezeným na prostředek a jejich ukládání do mezipaměti. Pokud je povolen režim MCP, vyžaduje MSAL každý požadavek na token, aby zahrnoval resource parametr a ukládá do mezipaměti přístupové tokeny klíčované tímto prostředkem.
Note
Toky MCP jsou dostupné jenom pro veřejné klientské aplikace.
Předpoklady
- Registrujte aplikaci pomocí Microsoft identity platform
- Aplikace nakonfigurovaná jako veřejný klient (například desktopová aplikace nebo aplikace rozhraní příkazového řádku)
-
@azure/msal-nodeV5 nebo novější nainstalovaná v projektu
Povolení režimu MCP
Nastavte isMcp: true v konfiguraci auth při vytváření PublicClientApplication:
const config = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(config);
Zahrňte parametr resource
Pokud je isMcptrue, každý požadavek na token musí obsahovat parametr resource. Vynechání vyvolá resource_parameter_required chybu.
const tokenRequest = {
scopes: ["User.Read"],
redirectUri: "http://localhost:3000/redirect",
resource: "https://example.microsoft.com",
code: authorizationCode,
};
const response = await pca.acquireTokenByCode(tokenRequest);
Important
resource Nastavte parametr přímo na objekt požadavku.
Nepředávejte ji přes extraQueryParameters současně s vlastností resource – jinak dojde k chybě misplaced_resource_parameter.
Následující příklad ukazuje správné a nesprávné způsoby nastavení parametru 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" },
};
Ukládání do mezipaměti s oborem prostředků
Pokud je isMcp povoleno, přístupové tokeny jsou ukládány do mezipaměti společně s příslušným prostředkem. To má vliv na tiché získání tokenu:
- Přístup do mezipaměti: Pokud existuje přístupový token uložený v mezipaměti pro stejné obory a prostředek, vrátí se z mezipaměti.
- Nenalezeno v mezipaměti: Pokud požadovaný prostředek neodpovídá žádnému tokenu uloženému v mezipaměti, MSAL přejde k síti, aby získala nový token pro požadovaný prostředek.
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],
});
Zpracování chyb
Dvě chyby jsou specifické pro toky MCP:
| Kód chyby | Description |
|---|---|
resource_parameter_required |
isMcp je true , ale požadavek neobsahuje resource parametr. |
misplaced_resource_parameter |
resource byl nalezen jak ve vlastnosti resource, tak v extraQueryParameters. Použijte jenom jednu. |
Obě chyby jsou vyvolány jako ClientAuthError. Další informace najdete v nejčastějších dotazech k uzlu MSAL.
Ukázky
- Ukázka toků MCP – Expresní aplikace demonstrující MCP s autorizačním kódem a tichými toky