Diagnosticare e risolvere i problemi relativi ad eccezioni non autorizzate di Azure Cosmos DB

SI APPLICA A: NoSQL

HTTP 401: la firma MAC trovata nella richiesta HTTP non corrisponde alla firma calcolata. Se è stato ricevuto il messaggio di errore 401 "La firma MAC trovata nella richiesta HTTP non corrisponde alla firma calcolata", può essere causato dagli scenari indicati di seguito.

Per gli SDK meno recenti, può essere visualizzata l'eccezione JSON non valida anziché l'eccezione 401 non autorizzata corretta. Gli SDK più recenti gestiscono correttamente questo scenario e forniscono un messaggio di errore valido.

Passaggi per la risoluzione dei problemi

L'elenco seguente contiene le cause note e le soluzioni per le eccezioni non autorizzate.

Lo scenario più comune è la rotazione non corretta della chiave

Poco dopo la rotazione di una chiave viene visualizzata la firma MAC 401 e infine la rotazione si interrompe senza modifiche.

Soluzione:

La chiave è stata ruotata senza seguire le procedure consigliate. La rotazione della chiave dell'account Azure Cosmos DB può richiedere da pochi secondi fino a qualche giorno a seconda delle dimensioni dell'account Azure Cosmos DB.

La chiave non è configurata correttamente

Il problema 401 Firma MAC sarà costante e si verificherà per tutte le chiamate che usano quella chiave.

Soluzione:

La chiave non è configurata correttamente nell'applicazione e per l’account usa la chiave errata, oppure non è stata copiata l’intera chiave.

L'applicazione usa le chiavi di sola lettura per le operazioni di scrittura

Il problema di firma MAC 401 si verifica solo per operazioni di scrittura quali creare o sostituire, tuttavia le richieste di lettura hanno esito positivo.

Soluzione:

Cambiare l'applicazione per usare una chiave di lettura/scrittura per consentire il completamento delle operazioni.

Race condition con creazione contenitore

Il problema di firma MAC 401 viene visualizzato poco dopo la creazione di un contenitore. Questo problema si verifica solo fino al completamento della creazione del contenitore.

Soluzione:

È presente una race condition con la creazione del contenitore. Un'istanza dell'applicazione sta provando ad accedere al contenitore prima del completamento della creazione del contenitore. Lo scenario più frequente per questa race condition avviene se l’applicazione è in esecuzione e il contenitore viene eliminato e poi ricreato con lo stesso nome. L'SDK prova a usare il nuovo contenitore, ma la creazione del contenitore è ancora in corso, quindi non contiene le chiavi.

Modalità bulk abilitata

Quando si usa Modalità bulk abilitata, le operazioni di lettura e scrittura sono ottimizzate per ottenere prestazioni di rete ottimali e inviate al back-end tramite un'API bulk dedicata. Gli errori 401 durante l'esecuzione di operazioni di lettura con la modalità bulk abilitata spesso indicano che l'applicazione usa le chiavi di sola lettura.

Soluzione

Durante l’esecuzione di operazioni con la modalità bulk abilitata, usare il meccanismo di autorizzazione o chiavi di lettura/scrittura con accesso in scrittura.

Passaggi successivi