0

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

我的应用程序需要验证两件事的身份验证:1)客户端的真实性 2)客户端的用户凭据

第 1 步)我需要在一定程度上确定调用服务的应用程序实际上是我的客户端应用程序。

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

我目前的观点是,将其实现为 WCF 服务可能是可行的方法,因为我可能对在客户端移植到其他平台有进一步的兴趣,并且快速浏览表明这在一定程度上得到了支持。

但是,由于我是所有这些证书恶作剧的新手,我的问题是我是否可以使用自签名证书来保护我的连接?只有我的服务器和我的客户端需要能够验证真实性。此外,是否有任何关于在 WP8 + Windows Azure 案例中究竟是如何做到这一点的指针?

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

4

1 回答 1

1

第 1 步几乎是不可能的。无论您在代码中使用什么证明方法,它都可以被另一个程序复制到代码中。

第 2 步不需要 WCF,尽管您可以将它与基本身份验证一起使用。使用支持基本身份验证的 WebAPI 公开 RESTful 服务同样容易。对于 WCF 或 WebAPI,保护通信的安全性相同 - 使用 SSL。

WCF 不喜欢自签名证书,并且将其配置为使用它们会消除一些安全性,具体取决于您的操作方式。鉴于来自受信任 CA 的 SSL 证书起价约为 10 美元,因此不获得证书将是一种虚假的经济。Azure webworkers 支持 SSL 证书,并且对 Azure 网站的支持即将到来,尽管没有确定日期。

最后,托管代码中的客户端证书可以相当容易地提取,因此您不能依赖它来识别客户端代码。

于 2013-04-04T01:19:18.307 回答