Delen via


Problemen met niet-geautoriseerde uitzonderingen in Azure Cosmos DB for NoSQL vaststellen en oplossen

Niet-geautoriseerde uitzonderingen in Azure Cosmos DB for NoSQL, zoals HTTP 401-fouten, treden meestal op wanneer de MAC-handtekening in de aanvraag niet overeenkomt met de verwachte waarde. Onjuiste sleutels, onvolledige sleutelrotaties of het gebruik van alleen-lezensleutels voor schrijfbewerkingen zijn vaak oorzaken van dit foutbericht.

Symptomen

Een veelvoorkomend symptoom van niet-geautoriseerde uitzonderingen ontvangt een HTTP 401-foutbericht. Deze fout geeft aan dat de aanvraag niet juist is geverifieerd.

HTTP 401: The MAC signature found in the HTTP request isn't the same as the computed signature.

Voor oudere SDK's (Software Development Kits) 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 en geven een geldig foutbericht weer.

Oorzaak

Deze fout treedt op wanneer de verificatiehandtekening (MAC) in uw aanvraag niet overeenkomt met wat Azure Cosmos DB verwacht. Veelvoorkomende redenen zijn het gebruik van de verkeerde sleutel, onvolledige sleutelrotatie of het uitvoeren van schrijfbewerkingen met een alleen-lezen sleutel. Dit komt niet overeen, voorkomt dat Cosmos DB uw identiteit verifieert, wat resulteert in een niet-geautoriseerde HTTP 401-fout.

Oplossing: Wacht tot sleutelrotatie is voltooid

Pas deze oplossing toe als er 401 MAC-handtekeningfouten optreden direct na het roteren van uw accountsleutels. Sleutelrotatie in Azure Cosmos DB kan een paar seconden tot enkele dagen duren, afhankelijk van de accountgrootte.

Zorg ervoor dat uw toepassing wacht totdat het sleutelrotatieproces volledig is voltooid voordat u de nieuwe sleutel voor verificatie gebruikt. De fout wordt automatisch opgelost zodra de rotatie is voltooid.

Oplossing: Onjuist geconfigureerde sleutels herstellen

Gebruik deze oplossing als u consistent 401 MAC-handtekeningfouten ontvangt voor alle aanvragen met behulp van een bepaalde sleutel. Dit scenario betekent meestal dat de sleutel onjuist of onvolledig is in uw toepassingsconfiguratie.

Controleer of de sleutel in uw toepassing overeenkomt met de juiste accountsleutel en zorg ervoor dat de hele sleutel wordt gekopieerd zonder afkapping.

Oplossing: Lees-/schrijfsleutels gebruiken voor schrijfbewerkingen

Pas deze oplossing toe als 401 MAC-handtekeningfouten alleen optreden tijdens schrijfbewerkingen, terwijl leesaanvragen slagen. In dit scenario wordt aangegeven dat de toepassing alleen-lezensleutels gebruikt voor schrijfacties.

Werk uw toepassing bij voor het gebruik van een lees-/schrijfsleutel of een autorisatiemechanisme met schrijftoegang voor alle schrijfbewerkingen.

Oplossing: wacht tot het maken van een container is voltooid

Kies deze oplossing als 401 MAC-handtekeningfouten direct na het maken van een container worden weergegeven, met name wanneer containers worden verwijderd en opnieuw worden gemaakt met dezelfde naam.

Zorg ervoor dat uw toepassing wacht totdat het proces voor het maken van containers volledig is voltooid voordat u bewerkingen op de container probeert te openen of uit te voeren.