Problemen met niet-geautoriseerde uitzonderingen in Azure Cosmos DB vaststellen en oplossen
VAN TOEPASSING OP: NoSQL
HTTP 401: De MAC-handtekening in de HTTP-aanvraag is niet hetzelfde als de berekende handtekening. Als u het foutbericht 401 'De MAC-handtekening gevonden in de HTTP-aanvraag is niet hetzelfde als de berekende handtekening' hebt ontvangen, kan dit worden veroorzaakt door de volgende scenario's.
Voor oudere SDK's kan de uitzondering worden weergegeven als een ongeldige JSON-uitzondering in plaats van de juiste 401 niet-geautoriseerde uitzondering. Nieuwere SDK's verwerken dit scenario correct en geven een geldig foutbericht.
Stappen voor probleemoplossing
De volgende lijst bevat bekende oorzaken en oplossingen voor niet-geautoriseerde uitzonderingen.
De sleutel is niet goed gedraaid. Dit is het meest voorkomende scenario
De 401 MAC-handtekening wordt kort na een sleutelrotatie gezien en stopt uiteindelijk zonder wijzigingen.
Oplossing:
De sleutel is omgewisseld en voldoet niet aan de best practices. De sleutelrotatie van het Azure Cosmos DB-account kan een paar seconden tot mogelijk dagen duren, afhankelijk van de grootte van het Azure Cosmos DB-account.
De sleutel is onjuist geconfigureerd
Het 401 MAC-handtekeningprobleem is consistent en gebeurt voor alle aanroepen met die sleutel.
Oplossing:
De sleutel is onjuist geconfigureerd in de toepassing en gebruikt de verkeerde sleutel voor het account of de hele sleutel is niet gekopieerd.
De toepassing gebruikt de alleen-lezen sleutels voor schrijfbewerkingen
Het 401 MAC-handtekeningprobleem treedt alleen op voor schrijfbewerkingen zoals maken of vervangen, maar leesaanvragen slagen.
Oplossing:
Schakel over naar de toepassing om een lees-/schrijfsleutel te gebruiken, zodat de bewerkingen met succes kunnen worden voltooid.
Racevoorwaarde met container maken
Het 401 MAC-handtekeningprobleem wordt kort na het maken van een container gezien. Dit probleem treedt alleen op totdat het maken van de container is voltooid.
Oplossing:
Er is een racevoorwaarde met het maken van containers. Een toepassingsexemplaren proberen toegang te krijgen tot de container voordat het maken van de container is voltooid. Het meest voorkomende scenario voor deze racevoorwaarde is als de toepassing wordt uitgevoerd en de container wordt verwijderd en opnieuw wordt gemaakt met dezelfde naam. De SDK probeert de nieuwe container te gebruiken, maar de container wordt nog steeds gemaakt, zodat deze niet over de sleutels beschikt.
Bulkmodus ingeschakeld
Wanneer bulkmodus is ingeschakeld, worden lees- en schrijfbewerkingen geoptimaliseerd voor de beste netwerkprestaties en verzonden naar de back-end via een toegewezen bulk-API. 401-fouten bij het uitvoeren van leesbewerkingen waarvoor bulkmodus is ingeschakeld, betekenen vaak dat de toepassing de alleen-lezen sleutels gebruikt.
Oplossing
Gebruik het mechanisme voor lezen/schrijven of autorisatie met schrijftoegang bij het uitvoeren van bewerkingen waarvoor bulkmodus is ingeschakeld.
Volgende stappen
- Problemen vaststellen en oplossen wanneer u de Azure Cosmos DB .NET SDK gebruikt.
- Meer informatie over prestatierichtlijnen voor .NET v3 en .NET v2.
- Problemen vaststellen en oplossen wanneer u de Azure Cosmos DB Java v4 SDK gebruikt.
- Meer informatie over prestatierichtlijnen voor Java v4 SDK.