Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Model Context Protocol (MCP) is een open standaard waarmee AI-toepassingen veilig verbinding kunnen maken met externe hulpprogramma's, gegevensbronnen en services. MSAL Browser ondersteunt MCP-flows door af te dwingen dat alle tokenaanvragen de parameter resource bevatten en toegangstokens in de cache op te slaan, waarbij die resource als sleutel wordt gebruikt.
Note
MCP-stromen worden ondersteund voor zowel standaard browsertoepassingen die gebruikmaken van PublicClientApplication als toepassingen voor Nested App Authentication (NAA) die gebruikmaken van createNestablePublicClientApplication.
Zie MSAL Node MCP-stromen voor implementaties aan de serverzijde.
Prerequisites
- Een toepassing registreren met het Microsoft Identity Platform
-
@azure/msal-browserv5 of hoger geïnstalleerd in uw project
MCP inschakelen
Stel isMcp: true in in de configuratie auth wanneer u uw PublicClientApplication maakt:
const msalConfig = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(msalConfig);
Gebruik voor NAA-toepassingen dezelfde configuratie met createNestablePublicClientApplication:
const pca = await msal.createNestablePublicClientApplication(msalConfig);
Resourceparameter
Wanneer isMcptrue is, moet elke tokenaanvraag een resource parameter bevatten. Als u deze weglaat, treedt er een resource_parameter_required fout op.
const tokenRequest = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
};
Important
Stel de resource parameter rechtstreeks in het aanvraagobject in. Geef het niet door via extraQueryParameters of extraParameters op hetzelfde moment als de resource eigenschap. Als u dit doet, treedt er een misplaced_resource_parameter fout op.
In het volgende voorbeeld ziet u de juiste en onjuiste manieren om de resource parameter in te stellen:
// 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" },
};
Caching op resourceniveau
Wanneer isMcp is ingeschakeld, worden toegangstokens in de cache opgeslagen samen met de bijbehorende resource. Dit gedrag beïnvloedt het op de achtergrond ophalen van tokens:
- Cachetreffer: Als er een toegangstoken in de cache bestaat voor dezelfde scopes en resource, wordt het uit de cache geretourneerd.
- Cache ontbreekt: als de aangevraagde resource niet overeenkomt met een token in de cache, valt MSAL terug naar het netwerk om een nieuw token voor de aangevraagde resource te verkrijgen.
// 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,
});
Foutafhandeling
Twee fouten zijn specifiek voor MCP-stromen:
| Foutcode | Description |
|---|---|
resource_parameter_required |
isMcp is true, maar de aanvraag bevat geen parameter resource. |
misplaced_resource_parameter |
Er is zowel in de eigenschap resource als in extraQueryParameters of extraParameters een resource gevonden. Gebruik slechts één. |
Beide fouten worden opgeworpen als ClientAuthError. Zie de documentatie over fouten voor meer informatie.