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.
Lösungen für allgemeine SDK-Bereitstellungs- und Betriebsprobleme.
Schnelldiagnose
SDK-Zustand überprüfen
# Check if SDK is running
kubectl get pods -l app=myapp
# Check SDK logs
kubectl logs <pod-name> -c sidecar
# Test health endpoint
kubectl exec <pod-name> -c sidecar -- curl http://localhost:5000/health
Konfiguration überprüfen
# View SDK environment variables
kubectl exec <pod-name> -c sidecar -- env | grep AzureAd
# Check ConfigMap
kubectl get configmap sidecar-config -o yaml
# Check Secrets
kubectl get secret sidecar-secrets -o yaml
Häufige Probleme
Container startet nicht
Symptom
Pod zeigt CrashLoopBackOff oder Error status an.
Mögliche Ursachen
Fehlende erforderliche Konfiguration
# Check logs for configuration errors
kubectl logs <pod-name> -c sidecar
# Look for messages like:
# "AzureAd:TenantId is required"
# "AzureAd:ClientId is required"
Lösung:
# Ensure all required configuration is set
env:
- name: AzureAd__TenantId
value: "<your-tenant-id>"
- name: AzureAd__ClientId
value: "<your-client-id>"
Ungültige Konfiguration von Anmeldeinformationen
# Check for credential errors in logs
kubectl logs <pod-name> -c sidecar | grep -i "credential"
Lösung: Überprüfen Sie die Konfiguration von Anmeldeinformationen und den Zugriff auf Schlüsseltresor oder geheime Schlüssel.
Portkonflikt
# Check if port 5000 is already in use
kubectl exec <pod-name> -c sidecar -- netstat -tuln | grep 5000
Lösung: Ändern Sie bei Bedarf den SDK-Port:
env:
- name: ASPNETCORE_URLS
value: "http://+:5001"
401 Unberechtigte Fehler
Symptom
Anforderungen an das SDK geben 401 Unauthorized zurück.
Mögliche Ursachen
Fehlender Autorisierungsheader
# Test with curl
curl -v http://localhost:5000/AuthorizationHeader/Graph
# Should show 401 because no Authorization header
Lösung: Autorisierungsheader einschließen:
curl -H "Authorization: Bearer <token>" \
http://localhost:5000/AuthorizationHeader/Graph
Ungültiges oder abgelaufenes Token
# Check token claims
kubectl exec <pod-name> -c sidecar -- curl -H "Authorization: Bearer <token>" \
http://localhost:5000/Validate
Lösung: Abrufen eines neuen Tokens aus der Microsoft Entra-ID.
Benutzergruppenkonflikt
# Check logs for audience validation errors
kubectl logs <pod-name> -c sidecar | grep -i "audience"
Lösung: Überprüfen sie, ob die Zielgruppenkonfiguration mit dem Token übereinstimmt:
env:
- name: AzureAd__Audience
value: "api://<your-api-id>"
Hinweis
Der erwartete Benutzergruppenwert hängt von der angefordertenAccessTokenVersion Ihrer App-Registrierung ab:
-
Version 2: Verwenden des Werts
{ClientId}direkt -
Version 1 oder null: Verwenden Sie den App-ID-URI (in der Regel
api://{ClientId}, es sei denn, Sie haben ihn angepasst).
Gültigkeitsbereichsprüfungsfehler
# Check logs for scope errors
kubectl logs <pod-name> -c sidecar | grep -i "scope"
Lösung: Stellen Sie sicher, dass das Token erforderliche Bereiche enthält:
env:
- name: AzureAd__Scopes
value: "access_as_user" # Or remove to disable scope validation
Um die detaillierten Fehler zu verstehen, müssen Sie möglicherweise die Protokollebene erhöhen:
Logging__LogLevel__Default=Debug
Logging__LogLevel__Microsoft.Identity.Web=Debug
Logging__LogLevel__Microsoft.AspNetCore=Debug
400 Ungültige Anforderung – Agent-Identitätsüberprüfung
Symptom
Anforderungen mit Agent-Identitätsparametern geben 400 Ungültige Anforderung zurück.
Fehler: "AgentUsername" ohne "AgentIdentity"
Anforderung
curl -H "Authorization: Bearer <token>" \
"http://localhost:5000/AuthorizationHeader/Graph?AgentUsername=user@contoso.com"
Fehlerantwort:
{
"status": 400,
"detail": "AgentUsername requires AgentIdentity to be specified"
}
Lösung: AgentIdentity-Parameter einschließen:
curl -H "Authorization: Bearer <token>" \
"http://localhost:5000/AuthorizationHeader/Graph?AgentIdentity=<client-id>&AgentUsername=user@contoso.com"
Fehler: "AgentUsername" und "AgentUserId" beide angegeben
Anforderung
curl -H "Authorization: Bearer <token>" \
"http://localhost:5000/AuthorizationHeader/Graph?AgentIdentity=<id>&AgentUsername=user@contoso.com&AgentUserId=<oid>"
Fehlerantwort:
{
"status": 400,
"detail": "AgentUsername and AgentUserId are mutually exclusive"
}
Lösung: Verwenden Sie nur eine:
# Use AgentUsername
curl -H "Authorization: Bearer <token>" \
"http://localhost:5000/AuthorizationHeader/Graph?AgentIdentity=<id>&AgentUsername=user@contoso.com"
# OR use AgentUserId
curl -H "Authorization: Bearer <token>" \
"http://localhost:5000/AuthorizationHeader/Graph?AgentIdentity=<id>&AgentUserId=<oid>"
Fehler: Ungültiges AgentUserId-Format
Anforderung
curl -H "Authorization: Bearer <token>" \
"http://localhost:5000/AuthorizationHeader/Graph?AgentIdentity=<id>&AgentUserId=invalid-guid"
Fehlerantwort:
{
"status": 400,
"detail": "AgentUserId must be a valid GUID"
}
Lösung: Bereitstellen einer gültigen GUID:
curl -H "Authorization: Bearer <token>" \
"http://localhost:5000/AuthorizationHeader/Graph?AgentIdentity=<id>&AgentUserId=12345678-1234-1234-1234-123456789012"
404 nicht gefunden – Dienst nicht konfiguriert
Symptom
{
"status": 404,
"detail": "Downstream API 'UnknownService' not configured"
}
Mögliche Ursachen
Typo des Dienstnamens
# Wrong service name in URL
curl -H "Authorization: Bearer <token>" \
http://localhost:5000/AuthorizationHeader/Grafh
# Should be "Graph"
Lösung: Verwenden Sie den richtigen Dienstnamen aus der Konfiguration.
Fehlende DownstreamApis-Konfiguration
Lösung: Dienstkonfiguration hinzufügen:
env:
- name: DownstreamApis__Graph__BaseUrl
value: "https://graph.microsoft.com/v1.0"
- name: DownstreamApis__Graph__Scopes
value: "User.Read"
Tokenerwerbsfehler
Symptom
500 Interner Serverfehler beim Abrufen von Token.
AADSTS-Fehlercodes
AADSTS50076: Mehrstufige Authentifizierung erforderlich
AADSTS50076: Due to a configuration change made by your administrator,
or because you moved to a new location, you must use multi-factor authentication.
Lösung: Der Benutzer muss MFA abschließen. Dies wird für Richtlinien für bedingten Zugriff erwartet.
AADSTS65001: Zustimmung des Benutzers erforderlich
AADSTS65001: The user or administrator has not consented to use the application.
Lösung:
- Anfordern der Administratorzustimmung für die Anwendung
- Sicherstellen, dass delegierte Berechtigungen ordnungsgemäß konfiguriert sind
AADSTS700016: Anwendung nicht gefunden
AADSTS700016: Application with identifier '<client-id>' was not found.
Lösung: Überprüfen Sie, ob ClientId korrekt ist und die Anwendung im Mandanten vorhanden ist.
AADSTS7000215: Ungültiges Client-Secret
AADSTS7000215: Invalid client secret is provided.
Lösung:
- Überprüfen, ob der geheime Clientschlüssel korrekt ist
- Überprüfen, ob der geheime Schlüssel abgelaufen ist
- Neues Geheimnis generieren und Konfiguration aktualisieren
AADSTS700027: Zertifikat oder privater Schlüssel nicht konfiguriert
AADSTS700027: The certificate with identifier '<thumbprint>' was not found.
Lösung:
- Überprüfen, ob das Zertifikat bei der App-Registrierung registriert ist
- Überprüfen der Zertifikatkonfiguration im SDK
- Stellen Sie sicher, dass auf das Zertifikat vom Container aus zugegriffen werden kann.
Token-Cache-Probleme
Lösung: Löschen sie den Tokencache, und starten Sie es neu:
kubectl rollout restart deployment <deployment-name>
Für verteilten Cache (Redis):
# Clear Redis cache
redis-cli FLUSHDB
Netzwerkkonnektivitätsprobleme
Microsoft Entra-ID kann nicht erreicht werden
Symptom: Timeoutfehler beim Abrufen von Tokens.
Diagnose:
# Test connectivity from SDK container
kubectl exec <pod-name> -c sidecar -- curl -v https://login.microsoftonline.com
# Check DNS resolution
kubectl exec <pod-name> -c sidecar -- nslookup login.microsoftonline.com
Lösung:
- Überprüfen von Netzwerkrichtlinien
- Überprüfen Sie, ob die Firewallregeln HTTPS-Verbindungen zu login.microsoftonline.com zulassen.
- Sicherstellen, dass DNS ordnungsgemäß funktioniert
Die Verbindung zu nachgeschalteten APIs ist nicht möglich.
Diagnose:
# Test connectivity to downstream API
kubectl exec <pod-name> -c sidecar -- curl -v https://graph.microsoft.com
# Check configuration
kubectl exec <pod-name> -c sidecar -- env | grep DownstreamApis__Graph__BaseUrl
Lösung:
- Überprüfen, ob die nachgeschaltete API-URL korrekt ist
- Überprüfen Sie die Netzwerkausgangsregeln
- Sicherstellen, dass auf die API über den Cluster zugegriffen werden kann
Die Anwendung kann das SDK nicht erreichen.
Symptom
Die Anwendung zeigt Verbindungsfehler beim Aufrufen des SDK an.
Diagnose:
# Test from application container
kubectl exec <pod-name> -c app -- curl -v http://localhost:5000/health
# Check if sidecar is listening
kubectl exec <pod-name> -c sidecar -- netstat -tuln | grep 5000
Lösung:
- Überprüfen Sie die Umgebungsvariable SIDECAR_URL
- Überprüfen Sie, ob das SDK ausgeführt wird:
kubectl get pods - Sicherstellen, dass Port 5000 nicht blockiert ist
Leistungsprobleme
Langsame Tokenerfassung
Diagnose:
# Enable detailed logging
# Add to SDK configuration:
# - name: Logging__LogLevel__Microsoft.Identity.Web
# value: "Debug"
# Check logs for timing information
kubectl logs <pod-name> -c sidecar | grep "Token acquisition"
Lösungen:
- Tokencache überprüfen: Sicherstellen, dass zwischenspeichern aktiviert und funktioniert
- Ressourcen erhöhen: Mehr CPU/Arbeitsspeicher für das SDK zuweisen
- Netzwerklatenz: Überprüfen Sie die Latenz zu Microsoft Entra-ID
- Verbindungspooling: Überprüfen der Wiederverwendung von HTTP-Verbindungen
Hohe Speicherauslastung
Diagnose:
# Check resource usage
kubectl top pod <pod-name> --containers
# Check for memory leaks in logs
kubectl logs <pod-name> -c sidecar | grep -i "memory"
Lösungen:
- Erhöhen der Speicherbeschränkungen
- Überprüfen auf Probleme mit der Tokencachegröße
- Überprüfen von Anwendungsnutzungsmustern
- Erwägen des verteilten Caches für mehrere Replikate
Zertifikatprobleme
Zertifikat nicht gefunden
Symptom:
Certificate with thumbprint '<thumbprint>' not found in certificate store.
Lösung:
- Überprüfen Sie, ob das Zertifikat korrekt eingebunden ist
- Überprüfen des Zertifikatspeicherpfads
- Sicherstellen, dass Zertifikatberechtigungen korrekt sind
Zertifikat abgelaufen
Symptom:
The certificate has expired.
Lösung:
- Generieren eines neuen Zertifikats
- Registrieren in der Microsoft Entra-ID
- Die SDK-Konfiguration aktualisieren
- Erneutes Bereitstellen von Containern
Zugriff auf Key Vault verweigert
Symptom:
Access denied to Key Vault '<vault-name>'.
Lösung:
- Überprüfen, ob die verwaltete Identität über Zugriffsrichtlinie für Key Vault verfügt
- Überprüfen der Firewallregeln des Key Vault
- Sicherstellen, dass das Zertifikat im Key Vault vorhanden ist
Probleme mit signierter HTTP-Anforderung (SHR)
Ungültiges PoP-Token
Symptom: Downstream-API lehnt PoP-Token ab.
Diagnose:
# Check if PoP token is being requested
kubectl logs <pod-name> -c sidecar | grep -i "pop"
# Verify PopPublicKey is configured correctly
kubectl exec <pod-name> -c sidecar -- env | grep PopPublicKey
Lösung:
- Überprüfen, ob der öffentliche Schlüssel ordnungsgemäß base64-codiert ist
- Sicherstellen, dass die downstream-API PoP-Token unterstützt
- Überprüfen des PoP-Tokenformats
Fehlender privater Schlüssel
Symptom: HTTP-Anforderung kann nicht signiert werden.
Lösung: Stellen Sie sicher, dass der private Schlüssel für die Anwendung für Signaturanforderungen verfügbar ist.
Fehlerreferenztabelle
| Fehlercode | Nachricht | Ursache | Lösung |
|---|---|---|---|
| 400 | AgentUsername erfordert AgentIdentity | AgentUsername ohne AgentIdentity | AgentIdentity-Parameter hinzufügen |
| 400 | AgentUsername und AgentUserId schließen sich gegenseitig aus | Beide Parameter angegeben | Nur einen Parameter verwenden |
| 400 | AgentUserId muss eine gültige GUID sein | Ungültiges GUID-Format | Stellen Sie eine gültige GUID bereit |
| 400 | Dienstname ist erforderlich. | Fehlender Dienstname im Pfad | Dienstnamen in URL einschließen |
| 400 | Es wurde kein Token gefunden. | Fehlender Autorisierungsheader | Gültiges Token einschließen |
| 401 | Nicht autorisiert | Ungültiges oder abgelaufenes Token | Abrufen eines neuen Tokens |
| 403 | Verboten | Fehlende erforderliche Bereiche | Token mit korrekten Berechtigungen anfordern |
| 404 | Downstream-API nicht konfiguriert | Dienst nicht in der Konfiguration | Hinzufügen der DownstreamApis-Konfiguration |
| 500 | Fehler beim Abrufen des Tokens | Verschiedene MSAL-Fehler | Überprüfen von Protokollen auf einen bestimmten AADSTS-Fehler |
| 503 | Dienst nicht verfügbar | Integritätsprüfungsfehler | Überprüfen des SDK-Status und der Konfiguration |
Debugtools
Detaillierte Protokollierung aktivieren
env:
- name: Logging__LogLevel__Default
value: "Debug"
- name: Logging__LogLevel__Microsoft.Identity.Web
value: "Trace"
- name: Logging__LogLevel__Microsoft.AspNetCore
value: "Debug"
Warnung: Die Debug-/Ablaufverfolgungsprotokollierung protokolliert möglicherweise vertrauliche Informationen. Wird nur in der Entwicklung oder vorübergehend in der Produktion verwendet.
Tokenüberprüfung testen
# Validate token
curl -H "Authorization: Bearer <token>" \
http://localhost:5000/Validate | jq .
# Check claims
curl -H "Authorization: Bearer <token>" \
http://localhost:5000/Validate | jq '.claims'
Testen der Tokenakquise
# Get authorization header
curl -H "Authorization: Bearer <token>" \
http://localhost:5000/AuthorizationHeader/Graph | jq .
# Extract and decode token
curl -H "Authorization: Bearer <token>" \
http://localhost:5000/AuthorizationHeader/Graph | \
jq -r '.authorizationHeader' | \
cut -d' ' -f2 | \
jwt decode -
Überwachen mit Application Insights
Wenn konfiguriert:
# Query Application Insights
az monitor app-insights query \
--app <app-insights-name> \
--analytics-query "traces | where message contains 'token acquisition' | take 100"
Hilfe erhalten
Sammeln von Diagnoseinformationen
Schließen Sie beim Öffnen eines Problems Folgendes ein:
SDK-Version:
kubectl describe pod <pod-name> | grep -A 5 "sidecar:"Konfiguration (vertrauliche Daten redigieren):
kubectl get configmap sidecar-config -o yamlProtokolle (letzte 100 Zeilen):
kubectl logs <pod-name> -c sidecar --tail=100Fehlermeldungen: Vollständige Fehlerantwort aus dem SDK
Anforderungsdetails: HTTP-Methode, Endpunkt, verwendete Parameter
Supportressourcen
- GitHub-Probleme: microsoft-identity-web/issues
- Microsoft Q&A: Microsoft Identity Platform
-
Stack Overflow: Tag
[microsoft-identity-web]
Bewährte Methoden für die Problembehandlung
- Beginnen Sie mit der Integritätsprüfung: Überprüfen Sie immer, ob das SDK zuerst fehlerfrei ist.
- Protokolle überprüfen: SDK-Protokolle enthalten wertvolle Diagnoseinformationen
- Überprüfen der Konfiguration: Stellen Sie sicher, dass alle erforderlichen Einstellungen vorhanden und korrekt sind.
- Inkrementelles Testen: Beginnen Sie mit einfachen Anforderungen, fügen Sie komplexität schrittweise hinzu
- Korrelations-IDs verwenden: Korrelations-IDs zur Ablaufverfolgung über Dienste hinweg einfügen
- Kontinuierlich überwachen: Einrichten von Warnungen für Authentifizierungsfehler
- Dokumentprobleme: Notizen zu Problemen und Lösungen für zukünftige Referenzen aufbewahren