我有一个特定的Silverlight应用程序,由WCF服务提供数据。我想确保WCF服务仅由调用,即具体的 Silverlight应用程序。什么是最好的方式来实现这一点,我必须做什么?它不一定是一个高度安全的解决方案。如何确保WCF服务仅由特定应用程序使用?
由于提前, 弗兰克
我有一个特定的Silverlight应用程序,由WCF服务提供数据。我想确保WCF服务仅由调用,即具体的 Silverlight应用程序。什么是最好的方式来实现这一点,我必须做什么?它不一定是一个高度安全的解决方案。如何确保WCF服务仅由特定应用程序使用?
由于提前, 弗兰克
启用服务基本认证(用户名/密码)。创建一个单独的用户,Silverlight应用程序将使用该用户对服务进行身份验证。
更简单但不太安全的做法可能是仅使用某种标识符(仅Silverlight客户端已知)作为服务参数。
这两个选项在使用HTTPS实施时显然是最安全的。这可以通过使用服务器证书来完成。
您CAN NOT限制访问此类服务。您的应用将需要访问您选择的任何密钥/密码。反编译你的应用程序并提取密钥是微不足道的。 SSL/TLS不起作用 - 因为可以从编译后的代码中提取密码。
这个问题已经被问了好几次最近 -
如果你的应用是匿名运行,那么它几乎不可能做到100%安全。
如何过,如果你的要求是你的用户,然后进行身份验证,你应该能够使该服务通过要求他们的登录凭据相对安全...
我不知道它是否易于使用WCF,但我猜你可以使用客户端证书做些事情。我只使用这种方法来保护网站,这是很容易做...
该方法的问题是,密钥/密码不安全。无论是flash/silverlight还是javascript,都可以轻松地从中提取密钥。 – 2010-04-15 13:32:11
对,好点。在javascript等情况下,没有办法以100%安全的方式编程执行此操作。所以,这可能意味着你在Web服务器/防火墙中遇到了诸如客户端证书或基于IP的过滤之类的东西,可能与上述解决方案相结合。 – 2010-04-15 17:48:08
无论如何,100%的安全性是一种幻想:) 这只是“多少努力和技能才能绕过安全限制”。所以这取决于数据的重要性。用户名/密码认证将为我做,感谢所有答案! – Aaginor 2010-04-21 14:33:43