MPNS发送推送禁止响应403

时间:2012-12-21 11:46:15

标签: windows-phone-7 httpwebrequest push-notification mpns

我想在我的Windows手机应用程序中使用MPNS,我们将验证向客户端发送推送的Web服务。

我完成了MPNS身份验证所需的所有步骤。

  1. 在我的WindowsPhone开发信息中心上载了证书。
  2. 使用我的证书的通用名称
  3. 创建了频道名称
  4. 使用https://获取返回URI,这意味着我的推送渠道已通过身份验证
  5. 将证书添加到我的WebRequest标头
  6. 但是当我要发送推送消息并发送webrequest但我得到“远程服务器返回错误:(403)禁止。”响应。我已经读过我的请求有问题,而且没有正确添加证书。

    这是我的请求标题代码

    X509Certificate2 Cert = new X509Certificate2(Server.MapPath(“Certs / abc.crt”),“password”); request.ClientCertificates.Add(CERT);

    我们有verisign ssl,我正在从我的visual studio IIS进行测试。它现在不在任何服务器上托管,甚至没有在IIS中配置,也没有为IIS配置SSL。

    这是问题还是别的什么。

1 个答案:

答案 0 :(得分:0)

您的问题没有唯一的答案。

但是,当您向请求添加客户端证书时,只需向其添加公钥。然后,服务器将以使用您的公钥签名的质询进行响应(请参阅客户端证书身份验证),您需要使用私钥对其进行解密和响应。如果此身份验证过程失败,您将获得403禁用。

因此,您必须确保将.pfx / .p12(包含您的私钥,公共证书,中间CA和根CA证书)导入到本地计算机证书存储中,并确保您的IIS服务器可以访问它。 / p>

由于有许多与Windows相关的变量,因此您可以使用Curl进行测试。请注意,您必须先将.pfx / .p12转换为.pem(使用openssl)。

curl --cert P:\cert.pem:PASSWORD -v -H "Content-Type:text/xml" -H "X-WindowsPhone-Target:To
ast" -H "X-NotificationClass:2" -X POST -d "<?xml version='1.0' encoding='utf-8'
?><wp:Notification xmlns:wp='WPNotification'><wp:Toast><wp:Text1>My title</wp:Te
xt1><wp:Text2>My subtitle</wp:Text2></wp:Toast></wp:Notification>" https://am3.n
otify.live.net/unthrottledthirdparty/01.00/push_uri_here

一旦你开始工作,你可能会遇到和我一样的问题:一些通知正在被正确发送而另一些通知被拒绝,因为没有明显的原因禁止403。见这个主题:

http://social.msdn.microsoft.com/Forums/sharepoint/en-US/383617ab-eafe-45fb-92cc-5e4b25a50e7f/authenticated-push-notifications-failing-randomly-403-forbidden?forum=wpnotifications

和此处相同:

https://stackoverflow.com/questions/23805883/windows-phone-authenticated-push-notifications-failing-randomly-403-forbidden