Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um sicherzustellen, dass Authentifizierungsdienste mit MSAL.NET ordnungsgemäß ausgeführt werden, bietet MSAL viele Möglichkeiten, das Verhalten zu überwachen, damit Probleme identifiziert und behoben werden können, bevor sie in der Produktion auftreten. Die falsche Verwendung von MSAL (was sich auf den Tokenlebenszyklus und cache bezieht) führt nicht zu sofortigen Fehlern, manchmal werden sie jedoch unter szenarien mit hohem Datenverkehr angezeigt, nachdem die App für einen bestimmten Zeitraum in der Produktion ist.
Wenn beispielsweise nur eine Instanz einer vertraulichen Clientanwendung verwendet wird und MSAL nicht für die Serialisierung des Tokencaches konfiguriert ist, wächst der Cache unbegrenzt weiter. Ein weiteres Problem tritt auf, wenn eine neue vertrauliche Clientanwendung erstellt und der Cache nicht verwendet wird, was zu Problemen wie Drosselung vom Identitätsanbieter führt. Empfehlungen zur angemessenen Verwendung von MSAL finden Sie unter "Hohe Verfügbarkeit".
Protokollierung
Eines der Tools, die MSAL zur Bekämpfung von Produktionsproblemen bereitstellt, besteht darin, Fehler zu protokollieren, wenn MSAL nicht ordnungsgemäß konfiguriert ist. Es ist wichtig, die Protokollierung nach Möglichkeit zu aktivieren, um Protokolle auf Fehler zu überwachen und bei der Diagnose problematischer Ereignisse zu helfen. Details finden Sie unter "Anmelden in MSAL.NET".
Die folgenden Fehler werden in MSAL protokolliert:
- Bei Verwendung einer Autorisierungsstelle, die auf
/commonoder/organizationsfür die Authentifizierung mit Clientanmeldeinformation (AcquireTokenForClient(IEnumerable<String>)) endet.- Die aktuelle Autorisierungsstelle verwendet den Endpunkt
/commonoder/organizations, was nicht empfohlen wird. Weitere Informationen finden Sie unter Flows für Clientanmeldeinformationen.
- Die aktuelle Autorisierungsstelle verwendet den Endpunkt
- Wenn der interne Standardtokencache verwendet wird, während vertrauliche Clientanwendungen verwendet werden.
- Der von MSAL bereitgestellte Standardtokencache ist nicht für hohe Leistung bei der Verwendung in Confidential-Client-Anwendungen ausgelegt. Weitere Informationen finden Sie unter Token-Cache-Serialisierung in MSAL.NET.
Metriken
Zusätzlich zur Protokollierung stellt MSAL wichtige Metriken in AuthenticationResult.AuthenticationResultMetadata bereit. Weitere Details finden Sie unter Hinzufügen der Überwachung rund um MSAL-Vorgänge.
DurationTotalInMs – Gesamtzeit für den Erwerb eines Tokens durch MSAL, einschließlich Netzwerkaufrufe und Cachevorgängen. Erstellen Sie eine Warnung für die allgemeine hohe Latenz (mehr als 1 Sekunde). Beachten Sie, dass der erste Tokenakquisitionsaufruf in der Regel einen zusätzlichen HTTP-Aufruf vorgibt.
DurationInCacheInMs – Zeit für das Laden oder Speichern des Tokencaches, der vom App-Entwickler angepasst wird (z. B. in Redis speichern). Erstellen Sie eine Warnung bei Spitzenwerten.
Note
Informationen dazu, wie Sie den Tokencache anpassen, finden Sie unter Serialisierung des Tokencaches in MSAL.NET.
DurationInHttpInMs – Zeitaufwand für HTTP-Aufrufe an den Identitätsanbieter. Erstellen Sie eine Warnung bei Spitzenwerten.
TokenSource– gibt die Quelle des Tokens an – in der Regel der Cache oder der Identitätsanbieter. Token werden viel schneller aus dem Cache abgerufen (z. B. ~100 ms im Vergleich zu ~700 ms). Diese Metrik kann verwendet werden, um das Cachetrefferverhältnis zu überwachen.
CacheRefreshReason - gibt den Grund für das Abrufen des Zugriffstokens vom Identitätsanbieter an. Siehe CacheRefreshReason. In Verbindung mit
TokenSourceverwenden.TokenEndpoint – der tatsächliche Tokenendpunkt-URI, der zum Abrufen des Tokens verwendet wird. Hilfreich, um zu verstehen, wie MSAL den Mandanten bei stillen Aufrufen und die Region bei regionalen Aufrufen ermittelt.
Note
Die Regionalisierung ist nur für interne Microsoft Anwendungen verfügbar.
RegionDetails – die Details zu der Region, die für den Anruf verwendet wird, z. B. die verwendete Region und alle Fehler bei der automatischen Erkennung.
Note
Die Regionalisierung ist nur für interne Microsoft Anwendungen verfügbar.
OpenTelemetry
Ab MSAL 4.58.0 unterstützt die Bibliothek OpenTelemetry – eine Reihe von APIs, die Instrumentierung, Generierung und Sammlung von Telemetriedaten auf konsistente und standardisierte Weise ermöglichen. Um zu beginnen, stellen Sie sicher, dass Sie;
- Installieren Sie die neueste Version von MSAL.NET.
- Fügen Sie dem Projekt die OpenTelemetry-Paketabhängigkeit hinzu.
- Fügen Sie eine Exporterabhängigkeit hinzu, mit der Sie Protokolle exportieren können, z. B. den Konsolenexportierer für OpenTelemetry.NET.
Note
Während der Konsolenexporteur ein guter Start für lokales Debuggen und Diagnosen ist, ist es nicht die beste Wahl für in der Produktion bereitgestellte Anwendungen. Wir empfehlen, die offizielle Exporterdokumentation auszuchecken, um mehr über die verfügbaren Optionen zu erfahren. Wenn Sie Anwendungen auf Azure hosten, können Sie die Aufnahme von OpenTelemetry-Daten in Azure Data Explorer oder Azure Monitor in Betracht ziehen.
Deklarieren Sie in Ihrem Anwendungsinitialisierungscode vor dem Bootstrapping des MSAL-Authentifizierungsclients (z. B PublicClientApplication . oder ConfidentialClientApplication), eine neue MeterProvider Instanz, indem Sie den folgenden Code verwenden.
using var meterProvider = Sdk.CreateMeterProviderBuilder()
.AddMeter("MicrosoftIdentityClient_Common_Meter")
.AddConsoleExporter()
.Build();
Dadurch wird der Zähleranbieter initialisiert und der integrierte MSAL.NET Meter (MicrosoftIdentityClient_Common_Meter) verwendet, der eine Reihe von Zählern und Histogrammen erfasst. Wenn Sie einen Konsolen-Exporter verwenden, sollten Sie sehen, dass die Ausgabe direkt im Terminal ausgegeben wird:
Im folgenden Abschnitt werden die unterstützten Zähler und Histogramme für den Standardzähler beschrieben.
Zähler
msalsuccess_counter
Zähler zur Erfassung der Gesamtzahl erfolgreicher Anforderungen in MSAL.
Metadaten
| Feld | Description |
|---|---|
MsalVersion |
Verwendete Version von MSAL. |
Platform |
Verwendete .NET-SKU. |
ApiId |
ID für die API, die für die Tokenakquisition verwendet wird. |
TokenSource |
Quelle des Tokens (z. B. Identitätsanbieter oder Cache). |
CacheRefreshReason |
Grund für die Cacheaktualisierung. |
CacheLevel |
L1, L2 oder Unbekannt, wenn der benutzerdefinierte Cache verwendet wird, die Ebene jedoch nicht aufgezeichnet wird. |
msalfailure_counter
Zähler zur Erfassung der Gesamtzahl fehlgeschlagener Anforderungen in MSAL.
Metadaten
| Feld | Description |
|---|---|
MsalVersion |
Verwendete MSAL-Version. |
Platform |
Verwendete .NET-SKU. |
ErrorCode |
Microsoft Entra ID-Fehlercode im Fall von MsalServiceException, MsalErrorCode im Fall von MsalClientException oder Name der Ausnahme, wenn es sich nicht um ein MsalException handelt. |
ApiId |
ID für die API, die für die Tokenakquisition verwendet wird. |
CacheRefreshReason |
Grund für die Cacheaktualisierung. |
Histogramme
MsalTotalDuration_1a_histogram
Histogramm zum Erfassen der Gesamtlatenz in Millisekunden für die Tokenerfassung über MSAL.
Metadaten
| Feld | Description |
|---|---|
MsalVersion |
Verwendete MSAL-Version |
Platform |
Verwendete .NET-SKU. |
ApiId |
ID für die API, die für die Tokenakquisition verwendet wird. |
CacheLevel |
L1, L2 oder Unbekannt, wenn der benutzerdefinierte Cache verwendet wird, aber die Ebene nicht aufgezeichnet wird. |
TokenSource |
Quelle des Tokens (z. B. Identitätsanbieter oder Cache). |
CacheRefreshReason |
Grund für die Cacheaktualisierung. |
MsalDurationInL1CacheInUs_1b_histogram
Histogramm zum Erfassen der Latenz, wenn ein L1-Cache verwendet wird. Die Werte befinden sich in Mikrosekunden für die Tokenerfassung über MSAL.
Metadaten
| Feld | Description |
|---|---|
MsalVersion |
Verwendete Version von MSAL. |
Platform |
Verwendete .NET-SKU. |
ApiId |
ID für die API, die für die Tokenakquisition verwendet wird. |
CacheLevel |
L1, L2 oder Unbekannt, wenn der benutzerdefinierte Cache verwendet wird, aber die Ebene nicht aufgezeichnet wird. |
TokenSource |
Quelle des Tokens (z. B. Identitätsanbieter oder Cache). |
CacheRefreshReason |
Grund für die Cacheaktualisierung. |
MsalDurationInL2Cache_1a_histogram
Histogramm zum Erfassen der L2-Cachelatenz in Millisekunden für die Tokenerfassung über MSAL.
Metadaten
| Feld | Description |
|---|---|
MsalVersion |
Verwendete MSAL-Version. |
Platform |
.NET-SKU verwendet. |
ApiId |
ID für die API, die für die Tokenakquisition verwendet wird. |
CacheRefreshReason |
Grund für die Cacheaktualisierung. |
MsalDurationInHttp_1a_histogram
Histogramm zum Erfassen der HTTP-Latenz in Millisekunden für die Tokenerfassung über MSAL.
Metadaten
| Feld | Description |
|---|---|
MsalVersion |
Verwendete MSAL-Version. |
Platform |
Verwendete .NET-SKU. |
ApiId |
ID für die API, die für die Tokenakquisition verwendet wird. |
Zusatzinformation
Weitere Informationen zur Verwendung von OpenTelemetry mit .NET Anwendungen finden Sie unter .NET Observability mit OpenTelemetry.