Toepassingen bewaken met behulp van MSAL.NET

Om ervoor te zorgen dat verificatieservices die gebruikmaken van MSAL.NET correct worden uitgevoerd, biedt MSAL veel manieren om het gedrag ervan te controleren, zodat problemen kunnen worden geïdentificeerd en opgelost voordat ze in productie worden uitgevoerd. Het onjuiste gebruik van MSAL (omdat het betrekking heeft op de levenscyclus en cache van tokens) leidt niet tot onmiddellijke storingen, maar soms gaan ze onder scenario's met veel verkeer omhoog nadat de app gedurende een bepaalde periode in productie is.

Als er bijvoorbeeld slechts één exemplaar van een vertrouwelijke clienttoepassing wordt gebruikt en MSAL niet is geconfigureerd voor het serialiseren van de tokencache, wordt de cache voor altijd groter. Er doet zich een ander probleem voor bij het maken van een nieuwe vertrouwelijke clienttoepassing en het niet gebruiken van de cache, wat leidt tot problemen zoals beperking van de id-provider. Zie Hoge beschikbaarheid voor aanbevelingen voor het op de juiste wijze gebruiken van MSAL.

Logging

Een van de hulpmiddelen die MSAL biedt om problemen in productie aan te pakken, is het registreren van fouten wanneer MSAL niet correct is geconfigureerd. Het is essentieel om logboekregistratie waar mogelijk in te schakelen voor het bewaken van logboeken op fouten en hulp bij de diagnose van problematische gebeurtenissen. Zie Logboekregistratie in MSAL.NET voor meer informatie.

De volgende fouten worden vastgelegd in MSAL:

  • Wanneer u een autoriteit gebruikt die eindigt op /common of /organizations voor verificatie met clientreferenties (AcquireTokenForClient(IEnumerable<String>)).
    • De huidige autoriteit maakt gebruik van het /common- of /organizations-eindpunt, wat niet wordt aanbevolen. Zie Clientreferentiestromen voor meer informatie.
  • Wanneer de standaard interne tokencache wordt gebruikt tijdens het gebruik van vertrouwelijke clienttoepassingen.
    • De standaardtokencache die door MSAL wordt geleverd, is niet ontworpen om goed te presteren bij gebruik in vertrouwelijke clienttoepassingen. Raadpleeg tokencacheserialisatie in MSAL.NET voor meer informatie.

Metrics

Naast logboekregistratie maakt MSAL belangrijke metrische gegevens beschikbaar in AuthenticationResult.AuthenticationResultMetadata. Zie Bewaking toevoegen rond MSAL-bewerkingen voor meer informatie.

  • DurationTotalInMs - totale tijd die in MSAL is besteed aan het verkrijgen van een token, inclusief netwerkoproepen en cachebewerkingen. Maak een waarschuwing over de algehele hoge latentie (meer dan 1 seconde). Houd er rekening mee dat de eerste aanroep voor tokenverwerving meestal een extra HTTP-aanroep maakt.

  • DurationInCacheInMs - tijd die is besteed aan het laden of opslaan van de tokencache, die is aangepast door de app-ontwikkelaar (bijvoorbeeld opslaan in Redis). Maak een waarschuwing over pieken.

    Note

    Zie Serialisatie van tokencache in MSAL.NET voor meer informatie over het aanpassen van tokencaches.

  • DurationInHttpInMs - tijd besteed aan het maken van HTTP-aanroepen naar de id-provider. Maak een waarschuwing over pieken.

  • TokenSource- geeft de bron van het token aan, meestal de cache of de id-provider. Tokens worden veel sneller opgehaald uit de cache (bijvoorbeeld ~100 ms versus ~700 ms). Deze metrische waarde kan worden gebruikt om de verhouding tussen cachetreffers te bewaken.

  • CacheRefreshReason - geeft de reden op voor het ophalen van het toegangstoken van de id-provider. Zie CacheRefreshReason. Gebruik in combinatie met TokenSource.

  • TokenEndpoint - de werkelijke tokeneindpunt-URI die wordt gebruikt om het token op te halen. Nuttig om te begrijpen hoe MSAL de tenant bepaalt in stille oproepen en de regio in regionale oproepen.

    Note

    Regionalisatie is alleen beschikbaar voor interne Microsoft toepassingen.

  • RegionDetails - de details over de regio die wordt gebruikt om aan te roepen, zoals de gebruikte regio en eventuele fout bij automatische detectie.

    Note

    Regionalisatie is alleen beschikbaar voor interne Microsoft toepassingen.

OpenTelemetry

Vanaf MSAL 4.58.0 ondersteunt de bibliotheek OpenTelemetry : een set API's die instrumentatie, generatie en verzameling van telemetriegegevens op een consistente en gestandaardiseerde manier mogelijk maken. Om aan de slag te gaan, moet u ervoor zorgen dat u;

  1. Installeer de nieuwste versie van MSAL.NET.
  2. Voeg de afhankelijkheid van het OpenTelemetry-pakket toe aan uw project.
  3. Voeg een afhankelijkheid van een exporteur toe, waarmee u logboeken kunt exporteren, bijvoorbeeld de consoleexporteur voor OpenTelemetry.NET.

Note

Hoewel de consoleexporteur een goed begin is voor lokale foutopsporing en diagnostische gegevens, is dit niet de beste keuze voor toepassingen die in productie zijn geïmplementeerd. We raden u aan de officiële documentatie van de exporteur te raadplegen voor meer informatie over beschikbare opties. Als u toepassingen host op Azure, kunt u overwegen om OpenTelemetry-gegevens op te nemen in Azure Data Explorer of Azure Monitor.

Declareer in de initialisatiecode van uw toepassing vóór het opstarten van de MSAL-verificatieclient (bijvoorbeeld PublicClientApplication of ConfidentialClientApplication) een nieuw MeterProvider exemplaar met behulp van de volgende code.

using var meterProvider = Sdk.CreateMeterProviderBuilder()
    .AddMeter("MicrosoftIdentityClient_Common_Meter")
    .AddConsoleExporter()
    .Build();

Hiermee initialiseert u de meterprovider en gebruikt u de ingebouwde MSAL.NET meter (MicrosoftIdentityClient_Common_Meter) waarmee een reeks tellers en histogrammen wordt vastgelegd. Wanneer een consoleexporteur wordt gebruikt, ziet u dat de uitvoer rechtstreeks in de terminal wordt gesluisd:

Voorbeeld van het uitvoeren van metrische gegevens van OpenTelemetry naar de terminal

In de volgende sectie worden de ondersteunde tellers en histogrammen voor de standaardmeter beschreven.

Tellers

msalsuccess_counter

Teller voor het bijhouden van het totaal aantal geslaagde aanvragen in MSAL.

Metadata
Veld Description
MsalVersion Gebruikte versie van MSAL.
Platform .NET SKU gebruikt.
ApiId Id voor de API die wordt gebruikt voor het verkrijgen van tokens.
TokenSource Bron van token (bijvoorbeeld id-provider of cache).
CacheRefreshReason Reden voor het vernieuwen van de cache.
CacheLevel L1, L2 of Onbekend wanneer de aangepaste cache wordt gebruikt, maar het niveau niet wordt vastgelegd.

msalfailure_counter

Teller voor het bijhouden van geaggregeerde mislukte aanvragen in MSAL.

Metadata
Veld Description
MsalVersion Versie van MSAL die wordt gebruikt.
Platform Gebruikte .NET-SKU.
ErrorCode Microsoft Entra ID-foutcode bij MsalServiceException, MsalErrorCode bij MsalClientException of de naam van de uitzondering als het geen MsalException is.
ApiId Id voor de API die wordt gebruikt voor het verkrijgen van tokens.
CacheRefreshReason Reden voor het vernieuwen van de cache.

Histogrammen

MsalTotalDuration_1a_histogram

Histogram voor het vastleggen van de totale latentie in milliseconden voor het verkrijgen van tokens via MSAL.

Metadata
Veld Description
MsalVersion Gebruikte versie van MSAL.
Platform .NET SKU gebruikt.
ApiId Id voor de API die wordt gebruikt voor het verkrijgen van tokens.
CacheLevel L1, L2 of Onbekend wanneer de aangepaste cache wordt gebruikt, maar het niveau niet wordt vastgelegd.
TokenSource Bron van token (bijvoorbeeld id-provider of cache).
CacheRefreshReason Reden voor het vernieuwen van de cache.

MsalDurationInL1CacheInUs_1b_histogram

Histogram voor het vastleggen van latentie wanneer een L1-cache wordt gebruikt. Waarden bevinden zich in microseconden voor het verkrijgen van tokens via MSAL.

Metadata
Veld Description
MsalVersion Gebruikte versie van MSAL.
Platform .NET SKU gebruikt.
ApiId Id voor de API die wordt gebruikt voor het verkrijgen van tokens.
CacheLevel L1, L2 of Onbekend wanneer de aangepaste cache wordt gebruikt, maar het niveau niet wordt vastgelegd.
TokenSource Bron van token (bijvoorbeeld id-provider of cache).
CacheRefreshReason Reden voor het vernieuwen van de cache.

MsalDurationInL2Cache_1a_histogram

Histogram voor het vastleggen van L2-cachelatentie in milliseconden voor het verkrijgen van tokens via MSAL.

Metadata
Veld Description
MsalVersion Gebruikte versie van MSAL.
Platform .NET SKU gebruikt.
ApiId Id voor de API die wordt gebruikt voor het verkrijgen van tokens.
CacheRefreshReason Reden voor het vernieuwen van de cache.

MsalDurationInHttp_1a_histogram

Histogram voor het vastleggen van HTTP-latentie in milliseconden voor het verkrijgen van tokens via MSAL.

Metadata
Veld Description
MsalVersion Versie van MSAL gebruikt.
Platform Gebruikte .NET-SKU.
ApiId Id voor de API die wordt gebruikt voor het verkrijgen van tokens.

Aanvullende informatie

Raadpleeg .NET waarneembaarheid met OpenTelemetry voor meer informatie over het gebruik van OpenTelemetry met .NET toepassingen.