Diagnose und Troubleshooting für Ausnahmen bei nicht autorisierten Vorgängen in Azure Cosmos DB

GILT FÜR: NoSQL

HTTP 401: The MAC signature found in the HTTP request is not the same as the computed signature. (Die MAC-Signatur in der HTTP-Anforderung entspricht nicht der berechneten Signatur.) Die Fehlermeldung 401, dass die MAC-Signatur in der HTTP-Anforderung nicht der berechneten Signatur entspricht, kann in folgenden Szenarien auftreten.

Bei älteren SDKs kann die Ausnahme als ungültige JSON-Ausnahme anstelle der richtigen 401-Ausnahme über nicht autorisierte Vorgänge angezeigt werden. Bei neueren SDKs ist die Anzeige in diesem Szenario korrekt, und es wird eine gültige Fehlermeldung angezeigt.

Schritte zur Problembehandlung

Die folgende Liste enthält bekannte Gründe und Lösungen für Ausnahmen aufgrund nicht autorisierter Vorgänge.

Das häufigste Szenario ist, dass der Schlüssel nicht ordnungsgemäß rotiert wurde.

Die Fehlermeldung 401 zur MAC-Signatur wird kurz nach der Schlüsselrotation angezeigt und schließlich ohne Änderungen unterbrochen.

Lösung:

Der Schlüssel wurde rotiert und entsprach nicht den bewährten Methoden. Abhängig von der Größe des Azure Cosmos DB-Kontos kann die Schlüsselrotation für das Azure Cosmos DB-Konto von nur wenigen Sekunden bis möglicherweise Tage dauern.

Der Schlüssel ist falsch konfiguriert.

Die Fehlermeldung 401 zur MAC-Signatur ist konsistent und tritt bei allen Aufrufen auf, für die dieser Schlüssel verwendet wird.

Lösung:

Der Schlüssel ist für die Anwendung falsch konfiguriert, und für das Konto wird der falsche Schlüssel verwendet, oder es wurde nicht der gesamte Schlüssel kopiert.

Die Anwendung verwendet die schreibgeschützten Schlüssel für Schreibvorgänge.

Die Fehlermeldung 401 zur MAC-Signatur tritt nur bei Schreibvorgängen wie dem Erstellen oder Ersetzen auf. Leseanforderungen sind jedoch erfolgreich.

Lösung:

Ändern Sie die Anwendung so, dass ein Schlüssel für Lese- und Schreibvorgänge verwendet wird, der es ermöglicht, dass Vorgänge erfolgreich abgeschlossen werden.

Es gibt eine Racebedingung beim Erstellen eines Containers.

Die Fehlermeldung 401 zur MAC-Signatur tritt oft kurz nach der Erstellung eines Containers auf. Der Fehler tritt aber nur so lange auf, bis die Containererstellung abgeschlossen ist.

Lösung:

Es liegt eine Racebedingung bei der Containererstellung vor. Eine Anwendungsinstanz versucht, auf den Container zuzugreifen, bevor die Containererstellung abgeschlossen ist. Das häufigste Szenario für diese Racebedingung ist, dass der Container gelöscht und mit demselben Namen neu erstellt wird, während die Anwendung ausgeführt wird. Das SDK versucht, den neuen Container zu verwenden, aber die Containererstellung wird noch ausgeführt, sodass die Schlüssel noch nicht verfügbar sind.

Massenmodus aktiviert

Wenn der Massenmodus aktiviert ist, werden Lese- und Schreibvorgänge für eine ideale Netzwerkleistung optimiert und über eine dedizierte Massen-API an das Back-End gesendet. 401-Fehler beim Ausführen von Lesevorgängen mit aktiviertem Massenmodus weisen häufig darauf hin, dass die Anwendung die schreibgeschützten Schlüssel verwendet.

Lösung

Verwenden Sie die Schlüssel mit Lese-/Schreibzugriff oder den Autorisierungsmechanismus mit Schreibzugriff, wenn Sie Vorgänge mit aktiviertem Massenmodus ausführen.

Nächste Schritte