2013-04-04 112 views
0

我正在从Windows Phone 8和/或WinRT设备上的客户端访问小型服务,这需要适度的安全性。我的目标是创建一个在Windows Azure中运行的服务。WCF与HTTPS和Windows Phone 8

我的应用程序需要身份验证验证两件事情: 1)客户端

步骤1)我需要有一定的公平程度,调用该服务的应用程序的客户端 2)用户证书的真实性,实际上,我的客户端应用程序。

步骤2)用户需要在系统中拥有一个可以进行身份​​验证的帐户。我可以通过简单地在接口中创建一个Login()方法来实现身份验证(除非有更好的方法)。但是,为此,客户端和服务器之间的通信需要安全,因为我不希望我的用户名+密码组合未加密。

我目前的观点是,将它作为WCF服务实现可能是一条路,因为我可能会有更多的兴趣将其移植到客户端的其他平台上,并且快速查看显示,这有点受到支持。

但是,由于我对所有这些证书模糊不清,我的问题是我是否可以使用自签名证书来保护我的连接?只有我的服务器和我的客户需要能够验证真实性。此外,在WP8 + Windows Azure案例中究竟如何完成这些指示?

另一个问题是,假设一个漂亮的黑客从客户端硬件中打开我的程序,他是否可以拿到证书并使用它创建他自己的客户端,以(他)的用户名/密码登录并执行我的操作原来的客户?或者有没有办法在客户端防止这种情况发生?换句话说,我的服务器可以根据我签署的有效证书来确定客户端软件的真实性吗?

回答

1

第1步几乎是不可能的。无论您在代码中使用哪种证明方法,都可以通过其他程序在代码中复制它。

步骤2不需要WCF,但您可以在基本身份验证中使用它。使用支持基本身份验证的WebAPI公开RESTful服务也同样简单。对于WCF或WebAPI来说保护通信是一样的 - 使用SSL。

WCF不喜欢自签名证书,并将其配置为使用它们会取消某些安全性,具体取决于您的操作方式。鉴于来自可信CA的SSL证书起价为10美元左右,假如不获得SSL证书,那将是一个虚假的经济。 Azure网络工作者支持SSL证书,并且Azure网站的支持即将到来,但没有确定的日期。

最后,托管代码中的客户端证书可以合理轻松地提取出来,因此您不能依靠它来识别客户端代码。