我打电话给Azure REST List Subscription Operation。列表订阅操作:403禁止
在我的开发机器上,我已经将证书安装到当前用户\个人。我可以成功调用API并获得响应。响应代码= 200
在测试框上,我已将相同证书安装到Current Use \ Personal中。我无法调用API。我得到了403禁止。下面完整的错误:
<Error>
<Code>AuthenticationFailed</Code>
<Message>The server failed to authenticate the request.
Verify that the certificate is valid and is associated with this subscription.
</Message>
</Error>
所以我检查证书,它是今天早些时候有效(因为这是今天进口)和有效至2040年一月所以我相信它是有效的?
问题:
- 我的本地机器上的相同的代码/项目/服务的工作原理,但不是在测试盒。为什么?
- 证书指纹是一样的,证书是一样的。证书与订阅Azure帐户相关联,因为它在本地工作!为什么?
我还应该检查什么?我知道,无论在本地和测试箱服务的附加证书到web请求(我通过详细日志记录知道这一点),但在
点HttpWebResponse WebResponse类= webRequest.GetResponse()作为HttpWebResponse;
我收到403禁止的错误。
在这一个我不介意。
更新:
在我的提琴手查看响应,响应的开头是:
HTTP/1.1 403 Forbidden
Content-Length: 294
Content-Type: application/xml; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 27 Sep 2013 02:49:59 GMT
现在我想知道的日期部分是否是问题。我记得读到日期必须在请求的15分钟内。在测试框中,当前时间是12:49 pm,因此看起来返回的日期“提前”了2个小时。这可能是为什么?或者,那只是小提琴演绎者的反应呢?
403错误通常表示证书有问题。根据您之前发布的其他线索,我记得您的测试框中存在证书问题。您可以做的一件事就是在您的测试框中创建一个全新的证书,而不是从开发箱导入并使用该证书来验证API请求。 –
是的,我想过这样做,但是盒子被锁定,没有安装makecert。 – andrewb
还有一个想法 - 在其他机器上创建一个证书,然后像在测试框中那样将其导入开发框。这样你就可以在你的开发箱上重新创建测试环境(就证书而言)。另外,不确定您的测试盒是否安装了IIS,但您也可以使用IIS创建证书。 –