【问题标题】:RIA Services Authentication - What type? Preventing "copies?"RIA 服务身份验证 - 什么类型?防止“复制”?
【发布时间】:2010-10-14 19:57:33
【问题描述】:
我有一个 Silverlight 应用程序,它将在开放的互联网上运行,基本上所有曾经生活过的人都可以使用。
应用程序利用 RIA 服务来操作服务器上数据库中的数据。
应用程序创建、读取、更新和删除不同种类的数据,但我只希望这些操作在应用程序内部进行。
这带来了两个问题:
- 对于使用什么类型的身份验证是否有特别的建议?窗体还是 Windows?
- 有没有办法阻止某人“链接”到应用程序?也就是说,从包含页面复制HTML,将其粘贴到本地机器上自己的HTML页面中并运行它?最终目标是只允许应用程序嵌入到直接从我的服务器请求的页面中并且仅由我的服务器运行?
【问题讨论】:
标签:
silverlight
authentication
silverlight-3.0
wcf-ria-services
【解决方案1】:
如果您的应用程序正在内部网络上使用,则最好使用 Windows 身份验证。否则(如您的情况)使用表单身份验证。
Silverlight 自动阻止应用程序(除非它们以提升的信任度运行)访问 Internet 上的资源(Web 服务、HTML 等),这些资源不是来自应用程序所源自的域,除非该域具有其根目录中的跨域策略文件。 Silverlight 运行时会阻止这种情况(而不是服务器),因此这是基于客户端的安全功能 - 不是基于服务器的。由于您的服务器上没有跨域策略文件,您的应用程序将只能在从您的服务器运行时与您的域服务通信(就像您之后一样)。应用程序将运行,但对这些服务的调用将失败。
您总是可以在代码中检查应用程序源自哪个域,并将其与硬编码的域名匹配,以防止应用程序从其他域运行。
希望这会有所帮助...
克里斯