Diagnostiquer et résoudre des problèmes liés à des exceptions non autorisées Azure Cosmos DB

S’APPLIQUE À : NoSQL

HTTP 401 : La signature MAC trouvée dans la requête HTTP n’est pas la même que la signature calculée. Si vous avez reçu le message d’erreur 401 « La signature MAC trouvée dans la requête HTTP n’est pas la même que la signature calculée », cela peut être dû aux scénarios suivants.

Pour les kits de développement logiciel (SDK) plus anciens, l’exception peut apparaître comme une exception JSON non valide à la place de l’exception non autorisée 401 correcte. Les SDK plus récents gèrent correctement ce scénario et fournissent un message d’erreur valide.

Étapes de dépannage

La liste suivante répertorie les causes connues et les solutions pour les exceptions non autorisées.

Le scénario le plus courant est que la clé n’a pas été correctement permutée

La signature MAC 401 est visible peu après une rotation de clé et finit par s’arrêter sans aucune modification.

Solution :

La clé a été pivotée et n’a pas respecté les meilleures pratiques. La rotation des clés de compte Azure Cosmos DB peut prendre de quelques secondes à plusieurs jours, selon la taille du compte Azure Cosmos DB.

La clé n’est pas correctement configurée

Le problème 401 de signature MAC est cohérent et se produit pour tous les appels avec cette clé.

Solution :

La clé n’est pas correctement configurée sur l’application et utilise une clé incorrecte pour le compte ou la clé entière n’a pas été copiée.

L’application utilise les clés en lecture seule pour les opérations d’écriture

Le problème 401 de signature MAC se produit uniquement pour les opérations d’écriture telles que créer ou remplacer, mais une demande de lecture est effectuée.

Solution :

Faites basculer l’application afin qu’elle utilise une clé de lecture/d’écriture pour permettre aux opérations de se terminer correctement.

Condition de concurrence critique avec une création de conteneur

Le problème 401 de signature MAC se produit peu après la création d’un conteneur. Ce problème se produit uniquement tant que la création du conteneur n’est pas terminée.

Solution :

Il existe une condition de concurrence avec la création d’un conteneur. Une instance d’application tente d’accéder au conteneur avant que la création du conteneur soit terminée. Le scénario le plus courant pour cette condition de concurrence critique est lorsque l’application est en cours d’exécution et que le conteneur est supprimé et recréé avec le même nom. Le Kit de développement logiciel (SDK) tente d’utiliser le nouveau conteneur, mais la création du conteneur est toujours en cours, de sorte qu’il n’en a pas les clés.

Mode bulk activé

Lorsque vous utilisez le mode bulk activé, les opérations de lecture et d’écriture sont optimisées pour optimiser les performances du réseau et envoyées au serveur principal via une API bulk dédiée. Des erreurs 401 lors de l’exécution d’opérations de lecture avec le mode bulk activé signifient souvent que l’application utilise les clés en lecture seule.

Solution

Utilisez les clés en lecture/écriture ou le mécanisme d’autorisation avec un accès en écriture lors de l’exécution d’opérations avec le mode bulk activé.

Étapes suivantes