能否在Windows Phone 7上使用客户端证书进行HTTPS请求?

3
我需要从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个回答

1

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

通过 Windows® Internet Explorer® 安装证书
可以将证书发布到网站上,并通过设备可访问的 URL 向用户提供。当用户访问该页面并点击证书时,它会在设备上打开。用户可以检查证书,如果选择继续,则证书将安装在设备上。

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

在应用程序能够使用证书之前,您需要引导用户执行其中一项操作。

来自Windows Phone 7 and Certificates_FINAL_121610.pdf


1

目前第三方WP7 SDK不支持客户端证书。

这里提供确认供您参考。

WP7上客户端认证的问题

虽然可以通过电子邮件在设备上安装证书(在Exchange集成解决方案中引用),但您的应用程序不会使用它们。


由于该服务不在您的控制范围内,如果您有兴趣找到一个解决方法,您可以实现一个接口服务。虽然这会增加一些开销和费用,但可能是您唯一的选择。 - Mick N
是的,我考虑过这个问题,但我担心这可能会损害安全性。不过,我需要再仔细思考一下…… - Mark Seemann
使用Azure AppFabric访问控制服务和OAuth与接口服务相结合,看起来可能是一条可行的路线:http://blogs.msdn.com/b/alikl/archive/2010/11/13/windows-phone-7-and-restful-services-delegated-access-using-azure-appfabric-access-control-service-acs-and-oauth.aspx - Mark Seemann

0

所以你可以使用oAuth进行身份验证,并在请求头中传递令牌。如果你查看acs.codeplex.com,你可以看到如何使用Azure ACS系统来完成这个过程。我知道你可能没有使用Azure,但是参考应用程序可能会有所帮助。我还建议搜索关于oAuth和Windows Phone 7的信息,我也通过这种方式找到了一些示例。

至于SSL,你应该能够通过浏览器轻松地完成。你还可以使用HttpWebRequest等方式打开任何https URL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接