将安全令牌绑定到特定客户端计算机

时间:2009-07-07 20:31:16

标签: silverlight web-services security

Silverlight 3和WPF中有一些应用程序与数据Web服务(基于WCF)进行通信。 有必要保护数据Web服务。只有已知用户才能访问数据。 解决方案无需外部访问即可在本地网络中运行。

客户端首先通过SSL连接到身份验证Web服务(提供用户名和密码)并获取安全令牌。之后,此令牌将传递给数据Web服务,以验证用户并获取对数据的访问权。

这是一个问题:如何将安全令牌的使用限制在最初发行它的机器上?

最初的想法是将安全令牌包含在客户端IP地址中,但在某些情况下可能会导致重新身份验证。例如,当用户计算机具有本地网络和Wi-Fi网络连接时。在这种情况下,从一个连接切换到另一个连接将导致更改客户端计算机的IP地址,因此安全令牌将变为无效。

有没有做这种事情的模式?

2 个答案:

答案 0 :(得分:2)

将安全令牌绑定到计算机没有100%的方法:(

我们通常会假设,如果您拥有首先获得令牌的凭据,那么您就是优秀团队,我们相信您。毕竟,我们仍然允许您访问我们的数据。

我有几点想法:

  • 对于您的令牌,您可能希望使用表单身份验证。默认情况下,它会将令牌作为cookie发出,但可以配置。另一个很酷的事情是它将自动过期(再次,可配置)令牌。使用您自己的令牌/安全系统会产生很多潜在的错误,并且使用现有系统会给您带来很大的帮助。甚至有WCF service for authentication
  • 如果您真的非常非常认真地限制来自特定计算机的呼叫,您可以在客户端计算机上使用 2路SSL 和证书。它仍然不是一个万无一失的解决方案(优秀团队上的某人仍然可以与糟糕团队上的某人共享证书),但它确保客户端拥有证书你分发了。缺点是这个东西是pain in the neck to configure

澄清:尝试思考实验。即使您可以从Silverlight调用Win32 API获取机器信息并将其用于令牌,您仍然没有万无一失的解决方案。您的API调用可以虚拟化。就此而言,您的整个客户端计算机都可以进行虚拟化。有关此证明,请参阅Darknet纸张或现有的任何DRM系统。这不可赢得

以下是如何限制某人从一支优秀团队中受到伤害的方法,让那些糟糕团队的人得到你的代币。你会在一段时间后过期令牌。然后你正在处理的场景是这样的:用户提供合法的用户/通行证,因此他们可以访问一定的时间(10分钟,10小时,10天,无论如何),你不会关心他们是来自Silverlight,AJAX还是Atari 2600 毕竟,他们只是证明了他们在用户/传球的良好团队中。这是一款你可以赢的游戏。

答案 1 :(得分:0)

如果客户端可以访问系统,请尝试读取硬盘序列号,网卡mac地址,主板序列号等,将它们组合在一起并生成散列。然后将此哈希与凭据一起发送以获取安全令牌。哈希也应该保存在服务器上。然后在所有后续请求中,客户端提交安全令牌以及刚刚生成的机器哈希。服务器验证凭据和散列。特别是,是否使用此特定哈希生成安全令牌。

一些工作,但它是可行的,而且很有趣。