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", ciò 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
- Diagnosticare e risolvere i problemi che si verificano durante l'uso di .NET SDK per Azure Cosmos DB.
- Informazioni sulle linee guida sulle prestazioni per .NET v3 e .NET v2.
- Diagnosticare e risolvere i problemi che si verificano durante l'uso di Java v4 SDK per Azure Cosmos DB.
- Informazioni sulle linee guida sulle prestazioni per Java v4 SDK.