Diagnóstico y solución de problemas de la excepción de servicio no autorizado de Azure Cosmos DB

SE APLICA A: NoSQL

HTTP 401: La firma MAC de la solicitud HTTP no es la misma que la firma calculada. Si recibe el mensaje de error 401 ("La firma MAC de la solicitud HTTP no es la misma que la firma calculada"), puede deberse a los siguientes escenarios.

En los SDK más antiguos, la excepción puede aparecer como una excepción de archivo JSON no válido, en lugar de la excepción de servicio no autorizado 401 adecuada. Los SDK más recientes controlan correctamente este escenario y proporcionan un mensaje de error válido.

Pasos para solucionar problemas

La lista siguiente muestra las causas y las soluciones conocidas de excepciones de servicio no autorizado.

El escenario más habitual es que la rotación de la clave no se ha producido adecuadamente.

La firma MAC 401 aparece poco después de una rotación de claves y finalmente se detiene sin cambios.

Solución:

La rotación de la clave no ha seguido los procedimientos recomendados. La rotación de claves de cuenta de Azure Cosmos DB puede tardar de unos pocos segundos a días, en función del tamaño de la cuenta de Cosmos DB.

La clave está mal configurada.

El problema de la firma MAC 401 será consecuente y se producirá en todas las llamadas que usan esa clave.

Solución:

La clave está mal configurada en la aplicación, y se está usando la clave incorrecta para la cuenta o no se ha copiado la clave completa.

La aplicación utiliza las claves de solo lectura para las operaciones de escritura.

El problema de la firma MAC 401 solo se produce para operaciones de escritura como crear o reemplazar, pero la solicitud de lectura se realiza correctamente.

Solución:

Cambie la aplicación para que use una clave de lectura/escritura para permitir que las operaciones se completen correctamente.

Condición de carrera con creación de contenedor

El problema de la firma MAC 401 aparece poco después de la creación de un contenedor. Este problema solo se produce hasta que se completa la creación del contenedor.

Solución:

Hay una condición de carrera con respecto a la creación de contenedores. Una instancia de la aplicación está intentando acceder al contenedor antes de que se complete la creación del contenedor. El escenario más común para esta condición de carrera se produce cuando la aplicación está en ejecución y el contenedor se elimina y se vuelve a crear con el mismo nombre. El SDK intentará usar el nuevo contenedor, pero la creación del contenedor está en curso, por lo que no tiene las claves.

Modo masivo habilitado

Cuando se usa el modo masivo habilitado, las operaciones de lectura y escritura se optimizan para obtener el mejor rendimiento de red y se envían al back-end mediante una API masiva dedicada. Los errores 401 al realizar operaciones de lectura con el modo masivo habilitado a menudo significan que la aplicación usa las claves de solo lectura.

Solución

Use las claves de lectura y escritura o un mecanismo de autorización con acceso de escritura al realizar operaciones con el modo masivo habilitado.

Pasos siguientes