Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Prerequisites
- Tekintse meg az MSAL Böngésző teljesítményét , amely ismerteti azokat a technikákat, amelyekkel az alkalmazás javíthatja a jogkivonatok MSAL használatával történő beszerzésének teljesítményét.
- Node.js
Teljesítménymérés
Azok az alkalmazások, amelyek meg szeretnék mérni a hitelesítési folyamatok teljesítményét az MSAL-csomópontban, ezt manuálisan, a Node teljesítménymérési API-jával vagy hasonló módon végezhetik el. Az alábbiakban felsorolunk néhány fontos adatpontot, amelyeket összegyűjthet:
| Adatok | Meaning | Javaslatok |
|---|---|---|
authType |
acquireToken* A tokenkéréshez használt API |
A használat azonosítására használható. |
correlationId |
A tokenkérelemhez használt korrelációs azonosító. Ezt az correlationIdAuthenticationResult tulajdonságon keresztül szerezheti be |
A használat azonosítására használható. |
durationTotalInMs |
Az MSAL-ben töltött teljes idő, beleértve a hálózati hívásokat és a gyorsítótár-hozzáférést | Riasztás az általános nagy késésről (> 1 másodperc). Az érték a token forrásától függ. Gyorsítótárból: egy gyorsítótár-hozzáférés. Hálózatról: két gyorsítótár-hozzáférés és két HTTP-hívás. |
durationInCacheInMs |
A token-gyorsítótár perzisztens tárolásának betöltésére vagy mentésére fordított idő (pl. Redis). | Riasztás kiugrások esetén. |
durationInHttpInMs |
Az idP-hez http-hívások indításával töltött idő (pl. Microsoft Entra ID). Az egyéni hálózati ügyfélprogramokkal részletesebb monitorozást végezhet. További információ: Konfiguráció és egyéni hálózati minta | Riasztás kiugrások esetén. |
tokenSource |
A token forrása (azaz gyorsítótár vagy hálózat). Ezt az fromCacheAuthenticationResult tulajdonságon keresztül szerezheti be |
A tokenek sokkal gyorsabban kérhetők le a gyorsítótárból (például ~100 ms, szemben a ~700 ms-mal). A gyorsítótár találati arányának figyelésére és riasztások beállítására használható. Használja együtt a durationTotalInMs elemmel. |
Például:
const { PerformanceObserver, performance } = require('node:perf_hooks');
const perfObserver = new PerformanceObserver((items) => {
items.getEntries().forEach((entry) => {
console.log(entry);
})
});
perfObserver.observe({ entryTypes: ["measure"], buffered: true });
// ...
performance.mark("acquireTokenByClientCredential-start");
const tokenResponse = await msalInstance.acquireTokenByClientCredential({
scopes: ["User.Read.All"],
});
performance.mark("acquireTokenByClientCredential-end");
performance.measure("acquireTokenByClientCredential", {
start: "acquireTokenByClientCredential-start"
end: "acquireTokenByClientCredential-end"
detail: {
tokenSource: tokenResponse.fromCache
correlationId: tokenResponse.correlationId
}
});
A bizalmas ügyfélalkalmazások teljesítményével kapcsolatos szempontok
Mivel a bizalmas ügyfélalkalmazásokat elsősorban kiszolgálóoldali forgatókönyvekben használják, amelyek a kérések egyidejű feldolgozását is magukban foglalják, javasoljuk, hogy az MSAL ConfidenticalClientApplication (CCA) példányokat hatókörbe foglalja minden felhasználóra, kérelemre vagy munkamenetre.
Az, hogy minden kéréshez új CCA-példány jön létre, azt jelenti, hogy annak alapértelmezett, memóriában tárolt gyorsítótára kezdetben sem tokeneket, sem a tokenek beszerzésének módjára vonatkozó metaadatokat nem tartalmaz. Ezért a gyenge teljesítmény elkerülése érdekében a létrehozott CCA-példányt a token igénylése előtt elő kell készíteni.
import {
ConfidentialClientApplication,
AuthenticationResult,
CryptoProvider,
OnBehalfOfRequest
} from "@azure/msal-node";
function getMsalInstance(partitionKey: string): ConfidentialClientApplication {
return new ConfidentialClientApplication({
auth: {
clientId: "ENTER_CLIENT_ID",
authority: "http://login.microsoftonline.com/ENTER_TENANT_ID"
cloudDiscoveryMetadata: "PROVIDE_STRINGIFIED_DISCOVERY_METADATA"
authorityMetadata: "PROVIDE_STRINGIFIED_AUTHORITY_METADATA"
},
cache: {
cachePlugin: new CustomCachePlugin(
this.cacheClientWrapper,
partitionKey
)
}
});
};
async function getToken(tokenRequest: OnBehalfOfRequest): Promise<AuthenticationResult | null> {
const partitionKey = await this.cryptoProvider.hashString(tokenRequest.oboAssertion);
const cca = getMsalInstance(partitionKey);
let tokenResponse = null;
try {
await cca.getTokenCache().getAllAccounts(); // required for cache read
tokenResponse = await cca.acquireTokenOnBehalfOf(tokenRequest);
} catch (error) {
throw error;
}
return tokenResponse;
};
További információkért lásd: egyéni elosztott gyorsítótár-bővítményt használó (CCA) webes API.