Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby zapewnić prawidłowe działanie usług uwierzytelniania opartych na MSAL.NET, biblioteka MSAL udostępnia wiele sposobów śledzenia ich działania, dzięki czemu problemy można identyfikować i rozwiązywać, zanim wystąpią w środowisku produkcyjnym. Nieprawidłowe użycie biblioteki MSAL (w kontekście cyklu życia tokenu i pamięci podręcznej) nie prowadzi do natychmiastowych błędów, jednak czasami problemy te ujawniają się przy dużym natężeniu ruchu, gdy aplikacja działa już od pewnego czasu w środowisku produkcyjnym.
Jeśli na przykład używane jest tylko jedno wystąpienie poufnej aplikacji klienckiej, a biblioteka MSAL nie jest skonfigurowana do serializacji pamięci podręcznej tokenów, pamięć podręczna będzie rosnąć bez końca. Inny problem pojawia się podczas tworzenia nowej aplikacji klienta poufnego i niekorzystania z pamięci podręcznej, co prowadzi do problemów, takich jak ograniczanie liczby żądań przez dostawcę tożsamości. Aby uzyskać zalecenia dotyczące odpowiedniego korzystania z biblioteki MSAL, zobacz Wysoka dostępność.
Logging
Jednym z narzędzi udostępnianych przez bibliotekę MSAL do rozwiązywania problemów występujących w środowisku produkcyjnym jest rejestrowanie błędów, gdy MSAL nie jest prawidłowo skonfigurowana. Włączenie rejestrowania zawsze, gdy jest to możliwe, ma kluczowe znaczenie dla monitorowania dzienników pod kątem błędów i pomocy w diagnozowaniu problematycznych zdarzeń. Aby uzyskać szczegółowe informacje, zobacz Rejestrowanie w MSAL.NET.
Następujące błędy zostaną zarejestrowane w usłudze MSAL:
- W przypadku używania urzędu certyfikacji kończącego się na
/commonlub/organizationsdo uwierzytelniania poświadczeń klienta (AcquireTokenForClient(IEnumerable<String>)).- Bieżący autorytet wskazuje na punkt końcowy
/commonlub/organizations, co nie jest zalecane. Aby uzyskać więcej informacji, zobacz Przepływy poświadczeń klienta .
- Bieżący autorytet wskazuje na punkt końcowy
- Gdy domyślna wewnętrzna pamięć podręczna tokenów jest używana podczas korzystania z poufnych aplikacji klienckich.
- Domyślna pamięć podręczna tokenów udostępniana przez bibliotekę MSAL nie została zaprojektowana z myślą o wysokiej wydajności w poufnych aplikacjach klienckich. Aby uzyskać więcej informacji, zobacz Serializacja pamięci podręcznej tokenów w MSAL.NET.
Metrics
Oprócz rejestrowania biblioteka MSAL uwidacznia ważne metryki w pliku AuthenticationResult.AuthenticationResultMetadata. Więcej informacji znajduje się w artykule Dodawanie monitorowania dla operacji MSAL.
DurationTotalInMs — całkowity czas spędzony na uzyskiwaniu tokenu przez bibliotekę MSAL, w tym wywołania sieciowe i operacje pamięci podręcznej. Utwórz alert dotyczący ogólnego dużego opóźnienia (więcej niż 1 sekunda). Należy pamiętać, że pierwsze wywołanie pozyskiwania tokenu zwykle wykonuje dodatkowe wywołanie HTTP.
DurationInCacheInMs — czas poświęcony na ładowanie lub zapisywanie pamięci podręcznej tokenów, konfigurowanej przez dewelopera aplikacji (na przykład poprzez zapis w usłudze Redis). Utwórz alert w przypadku nagłych wzrostów.
Note
Aby dowiedzieć się, jak dostosować buforowanie tokenów, zobacz Serializacja pamięci podręcznej tokenów w MSAL.NET.
DurationInHttpInMs — czas poświęcony na wykonywanie wywołań HTTP do dostawcy tożsamości. Utwórz alert o nagłych wzrostach.
TokenSource— wskazuje źródło tokenu — zazwyczaj pamięć podręczną lub dostawcę tożsamości. Tokeny są pobierane z pamięci podręcznej znacznie szybciej (na przykład ~100 ms w porównaniu z ok. 700 ms). Ta metryka może służyć do monitorowania współczynnika trafień pamięci podręcznej.
CacheRefreshReason — określa przyczynę pobierania tokenu dostępu od dostawcy tożsamości. Zobacz: CacheRefreshReason. Użyj w połączeniu z
TokenSource.TokenEndpoint — rzeczywisty adres URI punktu końcowego tokena używany do pobrania tokena. Przydatne do zrozumienia, jak biblioteka MSAL określa dzierżawcę w wywołaniach nieinteraktywnych i region w wywołaniach regionalnych.
Note
Regionalizacja jest dostępna tylko dla aplikacji Microsoft wewnętrznych.
RegionDetails — szczegółowe informacje o regionie używanym do nawiązywania połączenia, takie jak używany region i wszelkie błędy automatycznego wykrywania.
Note
Regionalizacja jest dostępna tylko dla aplikacji Microsoft wewnętrznych.
OpenTelemetry
Począwszy od biblioteki MSAL 4.58.0, biblioteka obsługuje bibliotekę OpenTelemetry — zestaw interfejsów API, które umożliwiają instrumentację, generowanie i zbieranie danych telemetrycznych w spójny i ustandaryzowany sposób. Aby rozpocząć, upewnij się, że:
- Zainstaluj najnowszą wersję MSAL.NET.
- Dodaj zależność pakietu OpenTelemetry do projektu.
- Dodaj zależność dla eksportera, która umożliwia eksportowanie logów, na przykład eksporter konsoli dla OpenTelemetry.NET.
Note
Chociaż eksporter konsoli jest dobrym początkiem lokalnego debugowania i diagnostyki, nie jest to najlepszy wybór dla aplikacji wdrożonych w środowisku produkcyjnym. Zalecamy zapoznanie się z oficjalną dokumentacją eksportera , aby dowiedzieć się więcej o dostępnych opcjach. Jeśli hostujesz aplikacje na Azure, możesz rozważyć pozyskiwanie danych OpenTelemetry w Azure Data Explorer lub Azure Monitor.
W kodzie inicjowania aplikacji przed uruchomieniem klienta uwierzytelniania MSAL (np PublicClientApplication . lub ConfidentialClientApplication) zadeklaruj nowe MeterProvider wystąpienie przy użyciu następującego kodu.
using var meterProvider = Sdk.CreateMeterProviderBuilder()
.AddMeter("MicrosoftIdentityClient_Common_Meter")
.AddConsoleExporter()
.Build();
Spowoduje to zainicjowanie dostawcy metryk i użycie wbudowanego miernika MSAL.NET (MicrosoftIdentityClient_Common_Meter), który rejestruje serię liczników i histogramów. Gdy jest używany eksporter konsoli, powinny zostać wyświetlone dane wyjściowe przesyłane potokiem bezpośrednio w terminalu:
W poniższej sekcji opisano obsługiwane liczniki i histogramy dla miernika domyślnego.
Counters
msalsuccess_counter
Licznik do rejestrowania zbiorczej liczby pomyślnie zakończonych żądań w MSAL.
Metadata
| Pole | Description |
|---|---|
MsalVersion |
Używana wersja MSAL. |
Platform |
Użyte SKU platformy .NET. |
ApiId |
Identyfikator interfejsu API używanego do uzyskiwania tokenów. |
TokenSource |
Źródło tokenu (np. dostawca tożsamości lub pamięć podręczna). |
CacheRefreshReason |
Przyczyna odświeżania pamięci podręcznej. |
CacheLevel |
L1, L2 lub Nieznany, gdy używana jest niestandardowa pamięć podręczna, ale poziom nie jest rejestrowany. |
msalfailure_counter
Licznik do przechwytywania agregacji żądań, które zakończyły się niepowodzeniem w usłudze MSAL.
Metadata
| Pole | Description |
|---|---|
MsalVersion |
Używana wersja MSAL. |
Platform |
Użyty identyfikator SKU platformy .NET. |
ErrorCode |
Kod błędu Microsoft Entra ID w przypadku MsalServiceException, MsalErrorCode w przypadku MsalClientException lub nazwa wyjątku, jeśli nie jest to MsalException. |
ApiId |
Identyfikator interfejsu API używanego do uzyskiwania tokenów. |
CacheRefreshReason |
Przyczyna odświeżania pamięci podręcznej. |
Histogramy
MsalTotalDuration_1a_histogram
Histogram do rejestrowania całkowitego opóźnienia w milisekundach podczas uzyskiwania tokenu za pośrednictwem MSAL.
Metadata
| Pole | Description |
|---|---|
MsalVersion |
Używana wersja MSAL. |
Platform |
Użyte SKU platformy .NET. |
ApiId |
Identyfikator interfejsu API używanego do pozyskiwania tokenów. |
CacheLevel |
L1, L2 lub Nieznany, gdy używana jest niestandardowa pamięć podręczna, ale poziom nie jest rejestrowany. |
TokenSource |
Źródło tokenu (np. dostawca tożsamości lub pamięć podręczna). |
CacheRefreshReason |
Przyczyna odświeżania pamięci podręcznej. |
MsalDurationInL1CacheInUs_1b_histogram
Histogram rejestrujący opóźnienia przy użyciu pamięci podręcznej L1. Wartości są podane w mikrosekundach dla uzyskiwania tokenu przy użyciu biblioteki MSAL.
Metadata
| Pole | Description |
|---|---|
MsalVersion |
Używana wersja biblioteki MSAL. |
Platform |
Użyto jednostki SKU platformy .NET. |
ApiId |
Identyfikator interfejsu API używanego do uzyskiwania tokenów. |
CacheLevel |
L1, L2 lub Nieznany, gdy używana jest niestandardowa pamięć podręczna, ale poziom nie jest rejestrowany. |
TokenSource |
Źródło tokenu (np. dostawca tożsamości lub pamięć podręczna). |
CacheRefreshReason |
Przyczyna odświeżania pamięci podręcznej. |
MsalDurationInL2Cache_1a_histogram
Histogram przedstawiający opóźnienie pamięci podręcznej L2 w milisekundach podczas pozyskiwania tokenu przy użyciu biblioteki MSAL.
Metadata
| Pole | Description |
|---|---|
MsalVersion |
Używana wersja biblioteki MSAL. |
Platform |
Użyte SKU platformy .NET. |
ApiId |
Identyfikator interfejsu API używanego do pozyskiwania tokenów. |
CacheRefreshReason |
Przyczyna odświeżania pamięci podręcznej. |
MsalDurationInHttp_1a_histogram
Histogram rejestrujący opóźnienie HTTP w milisekundach podczas uzyskiwania tokenu przez bibliotekę MSAL.
Metadata
| Pole | Description |
|---|---|
MsalVersion |
Używana wersja biblioteki MSAL. |
Platform |
Użyto SKU platformy .NET. |
ApiId |
Identyfikator interfejsu API używanego do uzyskiwania tokenów. |
Dodatkowe informacje
Aby uzyskać dodatkowe informacje na temat używania OpenTelemetry w aplikacjach .NET, zobacz Obserwowalność w środowisku .NET z użyciem OpenTelemetry.