Azure DocumentDB - HTTP请求中找到的MAC签名与计算的签名不同

时间:2015-02-25 15:49:25

标签: c# .net azure authorization azure-cosmosdb

看似随机我无法从DocumentDB获取文档。我可以调试,让它失败,下面的消息,然后再试一次,然后工作。如果这与我的MAC地址有关,我也尝试从不同的工作站获得相同的结果。

  

Microsoft.Azure.Documents.UnauthorizedException,message:   {“错误”:[“在HTTP请求中找到的MAC签名不是   与计算的签名相同。服务器使用以下字符串进行签名   'post \ ndocs \ nmo1oanohoga = \ nwed,25 feb 2015 12:35:57 gmt \ n \ n'“]}

我如何报道a)和b)试图了解正在发生的事情?

5 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。但错误是我的。

要修复我已经改变了Uri方法。

在:

this._documentCollectionUri = UriFactory.CreateDocumentUri(this._dataBaseName, this._collectionName, this._dataBaseName);

现在:

this._documentCollectionUri = UriFactory.CreateDocumentCollectionUri(this._dataBaseName, this._collectionName);

缺乏关注或关心

FLW

答案 1 :(得分:1)

我们已经证实这是一个与北欧地区隔离的问题。 我们正在对已知帐户应用修补程序,并将很快部署修复程序。

如果您不在北欧并且遇到此问题,或者如果您在此回复的2-3天内继续查看,请再次与我们联系,以便我们进一步调查。

答案 2 :(得分:1)

在1.9版本的SDK中似乎存在一个特殊的回归,可能会导致出现此错误。我很欣赏这与原始问题无关,但是如果你在这里找到这个错误,那么就认为这是发布它的合适位置。

这个(错误的)代码将在SDK 1.8和1.9中提供不同的错误消息:

docClient.CreateDocumentCollectionQuery(
     UriFactory.CreateDocumentCollectionUri(DbName, CollectionName))
  .Where(c => c.Id == CollectionName).ToList().Any()

1.8 中,您将正确获得ResourceType Collection is unexpected

1.9 中,您将获得The MAC signature found in the HTTP request is not the same as the computed signature. Server used following string to sign...

由于某种原因,它看起来像1.9返回错误的错误消息(OP引用的错误消息),但由于它完全具有误导性,因此您将难以追踪问题。

要清楚;我发布的代码是错误的。我要解释的问题是SDK版本1.9返回错误的错误消息。

答案 3 :(得分:0)

请问您的系统时钟时间是否与错误消息返回的系统时钟显着不同(<5分钟或大于20分钟)?由于时钟偏差,可以返回此错误。如果是这种情况,更新您的时钟时间可能会解决此问题。

DocumentDB客户端使用主密钥和请求的时间戳来构造消息验证代码(MAC),以验证请求。出于安全原因,该服务拒绝在小时间窗口之外使用MAC的请求。

答案 4 :(得分:0)

我之前的答案已被删除(我相信,是由于错误或误解...)

您可以检查您是否尝试使用只读键提交写入操作。 尝试使用只读键进行写入会引发该异常。

如果您使用静态类或方法来生成图形客户端,则可能是您使用了只读键的客户端实例错误。