如何限制对启用silverlight的数据服务的访问?

如何限制对启用silverlight的数据服务的访问?,silverlight,wcf-security,dataservice,Silverlight,Wcf Security,Dataservice,我们有一个Silverlight应用程序,我们编写了它调用一个支持Silverlight的数据服务。Silverlight应用程序不需要登录,因为它需要向未经验证的公众提供数据 我们有一些schmoe,他花时间检查我们的Silverlight应用程序,以某种方式弄清楚它调用的是什么服务,然后编写自己的客户端来过滤数据,这样他就可以在自己的网站上发布数据,并假装它是他的。我们需要防止这种情况 我如何将我的数据服务限制为只接受来自silverlight应用程序的请求?我尝试在clientaccess

我们有一个Silverlight应用程序,我们编写了它调用一个支持Silverlight的数据服务。Silverlight应用程序不需要登录,因为它需要向未经验证的公众提供数据

我们有一些schmoe,他花时间检查我们的Silverlight应用程序,以某种方式弄清楚它调用的是什么服务,然后编写自己的客户端来过滤数据,这样他就可以在自己的网站上发布数据,并假装它是他的。我们需要防止这种情况

我如何将我的数据服务限制为只接受来自silverlight应用程序的请求?我尝试在clientaccesspolicy.xml文件中使用allow from domain uri设置来限制仅从silverlight应用所在的域(比如mydomain.com)访问服务。不过,这完全没有起到任何作用,而且该服务仍在向域外的客户端提供请求。(我将我的SL应用程序放在我们控制的另一个域上进行了测试)

什么是适当/最佳/最有效的方式来限制数据服务,以便只有我们的应用程序才能使用它?谢谢


我正在使用SL 3和.NET 3.5。

clientaccesspolicy.xml告诉Silverlight应用程序它可以使用哪些Web服务。不阻止人们访问Web服务

您可以尝试使用身份验证登录,即使它不是必需的。这会阻止“schmoes”访问您的Web服务


还可以使用Dotfuscator防止“schoes”拆解Silverlight应用程序并获取登录名。

Silverlight Web服务安全性遵循ASP.NET安全性所使用的相同模式,尤其是暴露于AJAX的服务。最好的方法是使用ASP.NET的身份验证

RIA服务是处理这一问题的更好方法。它位于ASP.NET授权之上,但会在客户端和服务器端自动进行验证,以打击服务欺骗。它允许您通过向方法添加属性来处理客户端和服务器端授权,这些属性指示该方法需要授权访问,以及如果需要特定的权限,哪些组或用户可以访问


除了线端安全和模糊处理之外,请记住,客户端可以将调试器附加到在其浏览器中运行的Silverlight应用程序。请参阅。

感谢您的澄清。实际上,我现在正在研究使用SOAP头传输私钥。。。这也意味着要进行模糊处理,我猜还要使用http服务,这样他就不能从电线上窥探信息。正确吗?对于dotfuscate,我假设您只需解压缩xap,dotfuscate您在其中创建的任何dll,然后将其重新压缩回xap文件,是吗?使用SSL连接,信息是安全的。尚未尝试对silverlight应用程序进行dotfuscating,但他们似乎支持: