MCP-folyamatok használata MSAL-csomóponttal

A(z) Model Context Protocol (MCP)-alkalmazások fejlesztésekor az MSAL Node úgy konfigurálható, hogy kikényszerítse az erőforrás-hatókörhöz kötött tokenek lekérését és gyorsítótárazását. Ha az MCP mód engedélyezve van, az MSAL minden jogkivonat-kérésnek tartalmaznia kell egy paramétert resource , és gyorsítótárazza az erőforrás által kulcsolt hozzáférési jogkivonatokat.

Note

Az MCP-folyamatok csak nyilvános ügyfélalkalmazásokhoz érhetők el.

Prerequisites

MCP mód engedélyezése

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

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

const pca = new msal.PublicClientApplication(config);

Az erőforrásparaméter belefoglalása

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"],
    redirectUri: "http://localhost:3000/redirect",
    resource: "https://example.microsoft.com",
    code: authorizationCode,
};

const response = await pca.acquireTokenByCode(tokenRequest);

Important

Állítsa be a resource paramétert közvetlenül a kérelemobjektumon. Ne adja át extraQueryParameters használatával a(z) resource tulajdonsággal egy időben – ellenkező esetben misplaced_resource_parameter hiba történik.

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

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

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 hatással van a csendes jogkivonatok beszerzésére:

  • 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.
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],
});

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 A resource mind a resource tulajdonságban, mind a extraQueryParameters elemben megtalálható volt. Csak egyet használjon.

Mindkét hiba ClientAuthError formában dobódik. További információkért lásd az MSAL-csomópont gyakori kérdéseket.

Samples

  • MCP-folyamatok mintája – Az MCP-t engedélyezési kóddal és csendes folyamatokkal bemutató expressz alkalmazás.

Következő lépések