是否可以将客户端证书与来自Windows Phone 7的HTTPS请求一起使用?

时间:2010-12-23 13:06:29

标签: silverlight windows-phone-7 httpwebrequest x509certificate

我需要从 Windows Phone 7 调用基于REST的服务。

如果满足以下条件,服务仅接受请求:

  • 请求必须通过HTTPS / SSL
  • 发生
  • 请求必须使用客户端X509证书进行身份验证

我不控制服务,因此无法更改身份验证要求。

在完整的框架中,我们可以做到这样的事情:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.ClientCertificates.Add(accessCertificate);

但是,Silverlight 4中没有ClientCertificates属性,System.Security.Cryptography.X509Certificates命名空间中的任何X509类似乎都不可用。

是否真的无法从Windows Phone 7发出基于客户端证书的HTTPS请求?

3 个答案:

答案 0 :(得分:1)

在设备上安装第三方证书的方法只有两种,目前无法通过代码完成:

  

通过Windows®安装证书   InternetExplorer®
  证书可以   发布在网站上并制作   通过一个可供用户使用   设备可访问的URL,他们可以   用于下载证书。什么时候   用户访问该页面并点击该页面   证书,它在设备上打开。   用户可以检查证书,   如果他们选择继续   证书安装在   设备。

     

通过电子邮件安装证书
  证书安装程序   Windows Phone 7支持.cer,.p7b,   和.pfx文件。安装时   通过电子邮件证明,确保你的   邮件过滤器不会阻止.cer文件。   通过电子邮件发送的证书   显示为邮件附件。当一个   收到证书,用户可以   点击查看内容然后   点按即可安装证书。   通常,当一个身份   用户安装证书   提示输入密码   保护它。

在应用程序使用证书之前,您必须让用户执行其中一项操作。

来自Windows Phone 7 and Certificates_FINAL_121610.pdf

答案 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