我需要从 Windows Phone 7 调用基于REST的服务。
如果满足以下条件,服务仅接受请求:
我不控制服务,因此无法更改身份验证要求。
在完整的框架中,我们可以做到这样的事情:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.ClientCertificates.Add(accessCertificate);
但是,Silverlight 4中没有ClientCertificates
属性,System.Security.Cryptography.X509Certificates命名空间中的任何X509类似乎都不可用。
是否真的无法从Windows Phone 7发出基于客户端证书的HTTPS请求?
答案 0 :(得分:1)
在设备上安装第三方证书的方法只有两种,目前无法通过代码完成:
通过Windows®安装证书 InternetExplorer®
证书可以 发布在网站上并制作 通过一个可供用户使用 设备可访问的URL,他们可以 用于下载证书。什么时候 用户访问该页面并点击该页面 证书,它在设备上打开。 用户可以检查证书, 如果他们选择继续 证书安装在 设备。通过电子邮件安装证书
证书安装程序 Windows Phone 7支持.cer,.p7b, 和.pfx文件。安装时 通过电子邮件证明,确保你的 邮件过滤器不会阻止.cer文件。 通过电子邮件发送的证书 显示为邮件附件。当一个 收到证书,用户可以 点击查看内容然后 点按即可安装证书。 通常,当一个身份 用户安装证书 提示输入密码 保护它。
在应用程序使用证书之前,您必须让用户执行其中一项操作。
答案 1 :(得分:1)
目前第三方WP7 SDK不支持客户端证书。
确认此处供您参考。
Problems with client certification authentication on WP7
虽然可以通过电子邮件在设备上安装证书(在exhcange集成解决方案中引用),但您的应用程序将不会使用它们。
答案 2 :(得分:0)
因此,您可以使用oAuth进行身份验证,并在请求标头中传递令牌。如果您查看了acs.codeplex.com,您可以看到如何使用Azure ACS系统完成此操作。我意识到您可能没有使用Azure,但参考应用程序可能有所帮助。我也会搜索oAuth和Windows Phone 7,我也发现了一些例子。
就SSL而言,您应该能够通过浏览器完成任何问题。您还可以使用HttpWebRequest等打开任何https Url