3

我想在我的 windows phone 应用程序中使用 MPNS,我们将验证向客户端发送推送的 web 服务。

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

  1. 在我的 WindowsPhone 开发仪表板上上传了证书。
  2. 使用我的证书的通用名称创建通道名称
  3. 使用 https:// 获取返回 URI,这意味着我的推送通道已通过身份验证
  4. 将证书添加到我的 WebRequest 标头

但是当我要发送推送消息并发送 webrequest 时,我收到“远程服务器返回错误:(403)禁止。” 回复。我读到我的请求做错了,没有正确添加证书。

这是我的请求标头代码

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

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

是这个问题还是别的什么。

4

1 回答 1

0

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

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

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

因为有很多与 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

于 2014-05-22T12:06:26.110 回答