Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
För att säkerställa att autentiseringstjänster som använder MSAL.NET körs korrekt, tillhandahåller MSAL många sätt att övervaka dess beteende så att problem kan identifieras och åtgärdas innan de inträffar i produktion. Felaktig användning av MSAL (eftersom det gäller tokenlivscykel och cacheminne) leder inte till omedelbara fel, men ibland bubblar de upp under scenarier med hög trafik när appen är i produktion under en tidsperiod.
Om till exempel bara en instans av ett konfidentiellt klientprogram används och MSAL inte har konfigurerats för att serialisera tokencacheminnet, växer cachen för alltid. Ett annat problem uppstår när du skapar ett nytt konfidentiellt klientprogram och inte använder cachen, vilket leder till problem som t.ex. begränsning från identitetsprovidern. Rekommendationer om hur du använder MSAL på rätt sätt finns i Hög tillgänglighet.
Logging
Ett av de verktyg som MSAL tillhandahåller för att bekämpa produktionsproblem är loggningsfel när MSAL inte är korrekt konfigurerat. Det är viktigt att aktivera loggning när det är möjligt för att övervaka loggar för fel och hjälpa till med diagnostisering av problematiska händelser. Mer information finns i Loggning i MSAL.NET.
Följande fel loggas i MSAL:
- När du använder en auktoritet som slutar med
/commoneller/organizationsför autentisering med klientautentiseringsuppgifter (AcquireTokenForClient(IEnumerable<String>)).- Den aktuella auktoriteten riktar sig mot slutpunkten
/commoneller/organizations, vilket inte rekommenderas. Mer information finns i autentiseringsflöden för klienten .
- Den aktuella auktoriteten riktar sig mot slutpunkten
- När standardcacheminnet för intern token används vid användning av konfidentiella klientprogram.
- Standardtokencache som tillhandahålls av MSAL är inte utformad för att fungera när den används i konfidentiella klientprogram. Mer information finns i Serialisering av tokencache i MSAL.NET.
Metrics
Förutom loggning exponerar MSAL viktiga mått i AuthenticationResult.AuthenticationResultMetadata. Mer information finns i Lägga till övervakning kring MSAL-åtgärder .
DurationTotalInMs – Total tid i MSAL för att hämta en token, inklusive nätverksanrop och cacheåtgärder. Skapa en avisering om övergripande långa svarstider (mer än 1 sekund). Observera att det första tokenförvärvsanropet någonsin vanligtvis gör ett extra HTTP-anrop.
DurationInCacheInMs – tid som används för att ladda eller spara tokencachen, som apputvecklaren har anpassat (till exempel spara i Redis). Skapa en avisering om toppar.
Note
Information om hur du anpassar cachelagring av token finns i Token cache serialisering i MSAL.NET.
DurationInHttpInMs – tid som lagts på att göra HTTP-anrop till identitetsprovidern. Skapa en avisering om toppar.
TokenSource– anger källan till token – vanligtvis cachen eller identitetsprovidern. Token hämtas från cachen mycket snabbare (till exempel ~100 ms jämfört med ~700 ms). Det här måttet kan användas för att övervaka cacheträffförhållandet.
CacheRefreshReason – anger orsaken till att hämta åtkomsttoken från identitetsprovidern. Se även CacheRefreshReason. Använd tillsammans med
TokenSource.TokenEndpoint – den faktiska tokenslutpunkts-URI:n som används för att hämta token. Användbart för att förstå hur MSAL löser klientorganisationen i tysta anrop och regionen i regionala anrop.
Note
Regionalisering är endast tillgängligt för interna Microsoft program.
RegionDetails – information om den region som används för att anropa, till exempel den region som används och eventuella fel med automatisk identifiering.
Note
Regionalisering är endast tillgängligt för interna Microsoft program.
OpenTelemetry
Från och med MSAL 4.58.0 stöder biblioteket OpenTelemetry – en uppsättning API:er som möjliggör instrumentation, generering och insamling av telemetridata på ett konsekvent och standardiserat sätt. Kom igång genom att se till att du;
- Installera den senaste versionen av MSAL.NET.
- Lägg till OpenTelemetry-paketberoendet i projektet.
- Lägg till ett exportberoende som gör att du kan exportera loggar, till exempel konsolexportören för OpenTelemetry.NET.
Note
Konsolexportören är en bra start för lokal felsökning och diagnostik, men det är inte det bästa valet för produktionsdistribuerade program. Vi rekommenderar att du kollar in den officiella exportdokumentationen för att lära dig mer om tillgängliga alternativ. Om du är värd för program på Azure kan du överväga att mata in OpenTelemetry-data i Azure Data Explorer eller Azure Monitor.
I programmets initieringskod deklarerar du en ny PublicClientApplication instans innan du startar MSAL-autentiseringsklienten (t.ex. ConfidentialClientApplication eller MeterProvider), med hjälp av följande kod.
using var meterProvider = Sdk.CreateMeterProviderBuilder()
.AddMeter("MicrosoftIdentityClient_Common_Meter")
.AddConsoleExporter()
.Build();
Detta initierar mätarprovidern och använder den inbyggda MSAL.NET mätaren (MicrosoftIdentityClient_Common_Meter) som samlar in en serie räknare och histogram. När en konsolexportör används bör du se utdata som skickas direkt i terminalen:
I följande avsnitt beskrivs de räknare och histogram som stöds för standardmätaren.
Räknare
msalsuccess_counter
Räknare för att registrera aggregeringen av lyckade förfrågningar i MSAL.
Metadata
| Fält | Description |
|---|---|
MsalVersion |
Version av MSAL som används. |
Platform |
.NET-SKU som används. |
ApiId |
ID för DET API som används för tokenförvärv. |
TokenSource |
Källa för token (t.ex. identitetsprovider eller cache). |
CacheRefreshReason |
Orsak till cacheuppdatering. |
CacheLevel |
L1, L2 eller Unknown när den anpassade cachen används men nivån inte registreras. |
msalfailure_counter
Räknare för att samla in aggregering av misslyckade begäranden i MSAL.
Metadata
| Fält | Description |
|---|---|
MsalVersion |
Version av MSAL som används. |
Platform |
.NET-SKU som används. |
ErrorCode |
Microsoft Entra ID felkod i händelse av MsalServiceException, MsalErrorCode i händelse av MsalClientException eller namn på undantaget om det inte är en MsalException. |
ApiId |
ID för DET API som används för tokenförvärv. |
CacheRefreshReason |
Orsak till cacheuppdatering. |
Histogram
MsalTotalDuration_1a_histogram
Histogram för att samla in total svarstid i millisekunder för tokenförvärv via MSAL.
Metadata
| Fält | Description |
|---|---|
MsalVersion |
Version av MSAL som används. |
Platform |
Använd .NET SKU |
ApiId |
ID för DET API som används för tokenförvärv. |
CacheLevel |
L1, L2 eller Unknown när den anpassade cachen används men nivån inte registreras. |
TokenSource |
Källa för token (t.ex. identitetsprovider eller cache). |
CacheRefreshReason |
Orsak till cacheuppdatering. |
MsalDurationInL1CacheInUs_1b_histogram
Histogram för att samla in svarstider när en L1-cache används. Värden finns i mikrosekunder för tokenförvärv via MSAL.
Metadata
| Fält | Description |
|---|---|
MsalVersion |
Version av MSAL som används. |
Platform |
.NET SKU som används. |
ApiId |
ID för DET API som används för tokenförvärv. |
CacheLevel |
L1, L2 eller Unknown när den anpassade cachen används men nivån inte registreras. |
TokenSource |
Källa för token (t.ex. identitetsprovider eller cache). |
CacheRefreshReason |
Orsak till cacheuppdatering. |
MsalDurationInL2Cache_1a_histogram
Histogram för registrering av L2-cachefördröjning i millisekunder vid hämtning av token via MSAL.
Metadata
| Fält | Description |
|---|---|
MsalVersion |
Version av MSAL som används. |
Platform |
Använd .NET SKU. |
ApiId |
ID för DET API som används för tokenförvärv. |
CacheRefreshReason |
Orsak till cacheuppdatering. |
MsalDurationInHttp_1a_histogram
Histogram för att samla in HTTP-svarstid i millisekunder för tokenförvärv via MSAL.
Metadata
| Fält | Description |
|---|---|
MsalVersion |
Version av MSAL som används. |
Platform |
.NET-SKU som används. |
ApiId |
ID för DET API som används för tokenförvärv. |
Ytterligare information
Mer information om användningen av OpenTelemetry med .NET program finns i .NET observerbarhet med OpenTelemetry.