Tags标签 网战地图
当前位置: 主页 > 网站建设 > silverlight教程 >

Silverlight安全性-保护您的Silverlight应用程序的安全(2)

2012-04-09 09:52 [silverlight教程] 来源于:
导读:在您的 Silverlight 代码内实现严格的安全检查几乎没有意义。 毕竟,攻击者可以很容易就完全摆 脱 Silverlight 应用程序并直接调用您的服务,从而避开您实现的任何安全措施。 此外,恶意人员可以 使用像 Silverligh

在您的 Silverlight 代码内实现严格的安全检查几乎没有意义。 毕竟,攻击者可以很容易就完全摆 脱 Silverlight 应用程序并直接调用您的服务,从而避开您实现的任何安全措施。 此外,恶意人员可以 使用像 Silverlight Spy 或 Debugging Tools for Windows 这样的实用程序更改您的应用程序在运行时 的行为。

我们要认识到的重要一点是:服务无法确切地知道哪个应用程序正在调用它或者该应用程序在某些方 面尚未被修改。 因此,您的服务必须确保:

调用方已经过适当的身份验证

调用方已获授权执行所请求的操作

鉴于上述原因,本文的大部分内容重点介绍如何采用与 Silverlight 兼容的方式保护服务的安全。 特别是,我将考虑通过 ASP.NET 在 Microsoft IIS 中承载两种不同类型的服务。 第一种类型是使用 Windows Communication Foundation (WCF) 创建的服务,它为构建服务提供一种统一的编程模型。 第二 种类型是 WCF 数据服务(以前称为“ADO.NET 数据服务”),其构建于 WCF 之上,允许您使用标准 HTTP 谓词(一种称为“具象状态传输”(REST) 的方法)快速公开数据。

通常,如果担心安全性,则加密客户端和服务器之间的任何通信始终是明智之举。 建议使用 HTTPS/SSL 加密,且本文内假定使用此加密方法。

目前,Web 开发人员在 Microsoft 平台上最常用的两种身份验证方法是 Windows 身份验证和窗体身 份验证。

Windows 身份验证

Windows 身份验证利用本地安全机构或 Active Directory 验证用户凭据。 这在许多方案中都是一大 优势;它意味着您可以使用系统管理员已经熟悉的工具集中管理用户。 Windows 身份验证可以使用 IIS 支持的任何方案,包括基本身份验证、摘要式身份验证、集成身份验证 (NTLM/Kerberos) 和证书。

在使用 Windows 身份验证时,通常都会选择集成方案,因为用户无需再次提供其用户名和密码。 用 户在登录到 Windows 之后,浏览器可采用用于确认个人身份的令牌或握手形式转发凭据。 但是由于客户 端和服务器需要了解用户的域,使用集成身份验证有许多缺点。 因此,集成身份验证最适用于 Intranet 方案。 此外,尽管它自动与 Microsoft Internet Explorer 一起使用,但其他浏览器(如 Mozilla Firefox)需要进行额外配置。

通常,基本身份验证和摘要式身份验证需要用户在启动与您的网站的会话时,重新输入其用户名和密 码。 但是,由于这两种身份验证都属于 HTTP 规范,因此它们在大多数浏览器中均可正常使用,即使是 从组织外部进行访问也是如此。

Silverlight 利用浏览器进行通信,因此使用刚才讨论的任何 IIS 身份验证方法,均可轻松实现 Windows 身份验证。 有关如何实现的详细说明,建议阅读分步指南“如何:在 Windows 窗体中,使用 WCF 中的 basicHttpBinding 进行 Windows 身份验证并使用 TransportCredentialOnly”(网址为: msdn.microsoft.com/library/cc949012)。 此示例实际上使用 Windows 窗体测试客户端,但相同的方 法也适用于 Silverlight。

窗体身份验证

窗体身份验证是一种为 ASP.NET 中的自定义身份验证提供简单支持的机制。 因此,它特定于 HTTP, 这意味着它也可在 Silverlight 中轻松使用。

用户输入用户名和密码组合,此信息将提交给服务器进行验证。 服务器根据可信的数据源(通常是用 户数据库)检查凭据,如果凭据正确,则返回一个 FormsAuthentication Cookie。 然后,客户端在随后 的请求中提供此 Cookie。 Cookie 经过签名和加密,因此只有服务器才能解密,恶意用户既无法解密, 也无法篡改。

调用窗体身份验证的确切方式因登录屏幕的实现方式而异。 例如,如果在验证了用户的凭据后,使用 重定向到您的 Silverlight 应用程序的 ASP.NET Web 窗体,您可能不再需要执行身份验证工作。 Cookie 已发送到浏览器,且每当请求该域时,您的 Silverlight 应用程序都将继续使用该 Cookie。

不过,如果您希望在 Silverlight 应用程序内实现登录屏幕,您将需要创建一个公开您的身份验证方 法并发送相应 Cookie 的服务。 但幸运的是,ASP.NET 已经提供了您所需要的身份验证服务, 您只需在 您的应用程序中启用它即可。 有关详细指南,建议阅读“如何:使用 ASP.NET 身份验证服务通过 Silverlight 应用程序登录”(网址为:msdn.microsoft.com/library/dd560704(VS.96))。

ASP.NET 身份验证的另一项强大的功能是其可扩展性。 成员资格提供程序描述了用于验证用户名和密 码的机制。 幸运的是,ASP.NET 附带了许多成员资格提供程序,包括一个可使用 SQL Server 数据库的 成员资格提供程序,还有一个使用 Active Directory 的成员资格提供程序。 然而,如果没有符合您要 求的提供程序,可直接创建一个自定义实现。

(编辑:)

本文标签:
网友评论

栏目列表

推荐文章