Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Model Bağlam Protokolü (MCP) uygulamaları oluştururken, MSAL Node’u kaynak kapsamlı belirteç edinimini ve önbelleğe almayı zorunlu kılacak şekilde yapılandırabilirsiniz. MCP modu etkinleştirildiğinde, MSAL her belirteç isteğinin bir resource parametre içermesini gerektirir ve bu kaynak tarafından anahtarlanan erişim belirteçlerini önbelleğe alır.
Note
MCP akışları yalnızca genel istemci uygulamalarında kullanılabilir.
Prerequisites
- Microsoft kimlik platformuna uygulama kaydetme
- Genel istemci olarak yapılandırılmış bir uygulama (örneğin, masaüstü veya CLI uygulaması)
-
@azure/msal-nodeProjenizde v5 veya üzeri yüklü
MCP modunu etkinleştirme
PublicClientApplication oluştururken, auth yapılandırmasında isMcp: true ayarlayın:
const config = {
auth: {
clientId: "your-client-id",
authority: "https://login.microsoftonline.com/common",
isMcp: true,
},
};
const pca = new msal.PublicClientApplication(config);
Kaynak parametresini dahil et
isMcp
true olduğunda, her token isteği must bir resource parametresini içermelidir. Bunu atlamak resource_parameter_required hatasına neden olur.
const tokenRequest = {
scopes: ["User.Read"],
redirectUri: "http://localhost:3000/redirect",
resource: "https://example.microsoft.com",
code: authorizationCode,
};
const response = await pca.acquireTokenByCode(tokenRequest);
Important
Parametreyi resource doğrudan istek nesnesi üzerinde ayarlayın. Bunu, resource özelliğiyle aynı anda extraQueryParameters aracılığıyla geçirmeyin — bunu yapmak misplaced_resource_parameter hatasına neden olur.
Aşağıdaki örnekte, parametresini ayarlamanın doğru ve yanlış yolları gösterilmektedir 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" },
};
Kaynak düzeyinde önbellekleme
Etkinleştirildiğinde isMcp , erişim belirteçleri ilişkili kaynaklarıyla önbelleğe alınır. Bu durum, sessiz belirteç edinimini etkiler:
- Önbellek isabeti: Aynı kapsamlar ve kaynak için önbelleğe alınmış bir erişim belirteci varsa, önbellekten döndürülür.
- Önbellek hatası: İstenen kaynak önbelleğe alınmış hiçbir belirteçle eşleşmiyorsa MSAL, istenen kaynak için yeni bir belirteç almak üzere ağa başvurur.
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],
});
Hata yönetimi
MCP akışlarına özgü iki hata vardır:
| Hata kodu | Description |
|---|---|
resource_parameter_required |
isMcp, true ancak istek bir resource parametresi içermiyor. |
misplaced_resource_parameter |
resource, hem resource özelliğinde hem de extraQueryParameters içinde bulundu. Yalnızca bir tane kullanın. |
Her iki hata da ClientAuthError olarak fırlatılır. Daha fazla bilgi için MSAL Node SSS'ye bakın.
Samples
- MCP Akışları Örneği — Yetkilendirme kodu ve sessiz akışlarla MCP'yi gösteren hızlı uygulama.