c# - Azure DocumentDB: la firma MAC que se encuentra en la solicitud HTTP no es la misma que la firma calculada
.net authorization (3)
Aparentemente al azar, no puedo obtener un documento de DocumentDB. Puedo estar depurando, hacer que falle con el siguiente mensaje y luego volver a intentarlo y trabajar. Si esto tiene que ver con mi dirección MAC, también he intentado desde una estación de trabajo diferente con el mismo resultado.
Microsoft.Azure.Documents.UnauthorizedException, message: {"Errors": ["La firma MAC encontrada en la solicitud HTTP no es lo mismo que la firma calculada. Servidor utilizado la siguiente cadena para firmar - ''post / ndocs / nmo1oanohoga = / nwed , 25 de febrero de 2015, 12:35:57 gmt / n / n ''"]}
¿Cómo puedo incluso a) informar esto yb) tratar de entender qué está pasando?
¿Puedes verificar si la hora del reloj del sistema es significativamente diferente (<5 minutos o superior a 20 minutos) a la que devuelve el mensaje de error? Este error puede ser devuelto debido al sesgo del reloj. Si ese es el caso, actualizar la hora del reloj podría resolver este problema.
El cliente DocumentDB construye un Código de autenticación de mensaje (MAC) utilizando la clave maestra y la marca de tiempo de la solicitud para autenticar las solicitudes. El servicio rechaza las solicitudes con un MAC fuera de una pequeña ventana de tiempo por razones de seguridad.
Hemos confirmado que se trata de un problema aislado de la región de Europa del Norte. Estamos aplicando una revisión a cuentas conocidas efectuadas e implementaremos una solución en breve.
Si NO se encuentra en el norte de Europa y está experimentando este problema, o si continúa viendo si dentro de los 2-3 días posteriores a esta respuesta, comuníquese con nosotros nuevamente para que podamos investigar más a fondo.
Parece haber una regresión peculiar en la versión 1.9 del SDK que puede provocar este error. Aprecio que esto no tenga nada que ver con la pregunta original, pero si buscas este error, aterrizas aquí, así que pensé que sería un lugar apropiado para publicarlo.
Este código (incorrecto) dará diferentes mensajes de error en SDK 1.8 y 1.9:
docClient.CreateDocumentCollectionQuery(
UriFactory.CreateDocumentCollectionUri(DbName, CollectionName))
.Where(c => c.Id == CollectionName).ToList().Any()
En 1.8 obtendrá correctamente ResourceType Collection is unexpected
.
En 1.9 obtendrá The MAC signature found in the HTTP request is not the same as the computed signature. Server used following string to sign...
The MAC signature found in the HTTP request is not the same as the computed signature. Server used following string to sign...
Parece que, por alguna razón, 1.9 devuelve el mensaje de error incorrecto (al que hace referencia el OP), pero como es completamente engañoso, tendrá dificultades para rastrear el problema.
Para ser claro; el código que publiqué está mal . El problema que estoy explicando es que SDK versión 1.9 devuelve el mensaje de error incorrecto.