MCP-folyamatok használata az MSAL Browserrel

A Model Context Protocol (MCP) egy nyílt szabvány, amely lehetővé teszi, hogy az AI-alkalmazások biztonságosan csatlakozzanak külső eszközökhöz, adatforrásokhoz és szolgáltatásokhoz. Az MSAL Browser támogatja az MCP-folyamatokat azáltal, hogy kényszeríti, hogy minden jogkivonat-kérés tartalmazzon egy paramétert resource , és gyorsítótárazzon az erőforrás által kulcsolt hozzáférési jogkivonatokat.

Note

Az MCP-folyamatok mind a standard böngészőalkalmazások, PublicClientApplication mind a beágyazott alkalmazáshitelesítési (NAA) alkalmazások esetében createNestablePublicClientApplicationtámogatottak.

A kiszolgálóoldali implementációkról lásd az MSAL Node MCP-folyamatait.

Prerequisites

Az MCP engedélyezése

Állítsa be a(z) auth konfigurációban a(z) isMcp: true elemet a(z) PublicClientApplication létrehozásakor:

const msalConfig = {
    auth: {
        clientId: "your-client-id",
        authority: "https://login.microsoftonline.com/common",
        isMcp: true,
    },
};

const pca = new msal.PublicClientApplication(msalConfig);

NAA-alkalmazások esetén használja ugyanazt a konfigurációt a következőkkel createNestablePublicClientApplication:

const pca = await msal.createNestablePublicClientApplication(msalConfig);

Erőforrásparaméter

Ha a(z) isMcp be van állítva true, minden tokenkérésnek tartalmaznia kell egy resource paramétert. A kihagyás hibát jelez resource_parameter_required .

const tokenRequest = {
    scopes: ["User.Read"],
    resource: "https://example.microsoft.com",
};

Important

Állítsa be a resource paramétert közvetlenül a kérelemobjektumon. Ne adja át a(z) extraQueryParameters vagy extraParameters elemen keresztül a(z) resource tulajdonsággal egy időben — ez misplaced_resource_parameter hibát eredményez.

Az alábbi példa a paraméter beállításának helyes és helytelen módjait resource mutatja be:

// 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" },
};

Erőforrásonkénti gyorsítótárazás

isMcp engedélyezése esetén a hozzáférési tokenek a hozzájuk társított erőforrással együtt gyorsítótárba kerülnek. Ez a viselkedés befolyásolja a csendes jogkivonatok beszerzését:

  • Gyorsítótár-találat: Ha egy gyorsítótárazott hozzáférési jogkivonat létezik ugyanahhoz a hatókörhöz és erőforráshoz, a gyorsítótárból kapja vissza.
  • Gyorsítótár-hiba: Ha a kért erőforrás nem egyezik a gyorsítótárazott jogkivonattal, az MSAL visszaesik a hálózatra, hogy új jogkivonatot szerezzen be a kért erőforráshoz.
// 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,
});

Hibakezelés

Két hiba jellemző az MCP-folyamatokra:

Hibakód Description
resource_parameter_required A(z) isMcp értéke true, de a kérés nem tartalmaz resource paramétert.
misplaced_resource_parameter resource található mind a(z) resource tulajdonságban, mind a(z) extraQueryParameters vagy extraParameters elemben. Csak egyet használjon.

Mindkét hiba ClientAuthError formában dobódik. További információkért tekintse meg a hibák dokumentációját.

Következő lépések