Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Model Context Protocol (MCP) è uno standard aperto che consente alle applicazioni di intelligenza artificiale di connettersi in modo sicuro con strumenti esterni, origini dati e servizi. MSAL Browser supporta i flussi MCP applicando che tutte le richieste di token includono un resource parametro e memorizzano nella cache i token di accesso con chiave da tale risorsa.
Note
I flussi MCP sono supportati sia per le applicazioni browser standard che utilizzano PublicClientApplication sia per le applicazioni con autenticazione annidata (NAA) che utilizzano createNestablePublicClientApplication.
Per le implementazioni lato server, vedere Flussi MCP del nodo MSAL.
Prerequisiti
- Registrare un'applicazione con Microsoft Identity Platform
-
@azure/msal-browserv5 o versione successiva installata nel progetto
Abilitare MCP
Impostare isMcp: true nella configurazione auth durante la creazione di PublicClientApplication:
const msalConfig = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(msalConfig);
Per le applicazioni NAA, usare la stessa configurazione con createNestablePublicClientApplication:
const pca = await msal.createNestablePublicClientApplication(msalConfig);
Parametro della risorsa
Quando isMcp è true, ogni richiesta di token deve includere un resource parametro. Omettendolo, viene generato un resource_parameter_required errore.
const tokenRequest = {
scopes: ["User.Read"],
resource: "https://example.microsoft.com",
};
Importante
Impostare il resource parametro direttamente sull'oggetto richiesta. Non passarlo tramite extraQueryParameters o extraParameters contemporaneamente alla resource proprietà. In questo modo viene generato un misplaced_resource_parameter errore.
Nell'esempio seguente vengono illustrati i modi corretti e non corretti per impostare il resource parametro :
// 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" },
};
Memorizzazione nella cache con ambito risorsa
Quando isMcp è abilitato, i token di accesso vengono memorizzati nella cache con la risorsa associata. Questo comportamento influisce sull'acquisizione invisibile all'utente dei token:
- Riscontri nella cache: se esiste un token di accesso memorizzato nella cache per gli stessi ambiti e risorse, viene restituito dalla cache.
- Mancanza nella cache: se la risorsa richiesta non corrisponde ad alcun token memorizzato nella cache, MSAL ricorre alla rete per ottenere un nuovo token per la risorsa richiesta.
// 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,
});
Gestione degli errori
Due errori sono specifici dei flussi MCP:
| Codice di errore | Description |
|---|---|
resource_parameter_required |
isMcp è true ma la richiesta non include un resource parametro. |
misplaced_resource_parameter |
È stato trovato un resource sia nella proprietà resource sia in extraQueryParameters o extraParameters. Usare solo uno. |
Entrambi gli errori vengono generati come ClientAuthError. Per altre informazioni, vedere la documentazione relativa agli errori.