简介
安全是所有Web项目在设计时都要考虑的一个重要因素。无论是选择最短口令 ,决定何时使用SSL加密HTTP会话,还是通过自动登录cookie来识别用户,都经常 要付出重大的设计努力,以保护用户的身份信息和他们可能存放于Web站点的其他 资料。糟糕的安全性可能带来公关灾难。当最终用户努力保持对其个人信息的控 制时,他们要面临令人迷惑的隐私政策,需要牢记众多站点的不同口令,以及遭 遇“钓鱼式攻击”事件。
在宏观层次上,数字身份引起了许多复杂的技术和社会问题,业界一些团体如 Liberty Alliance和IdentityGang都正试图通过开发新的技术标准来解决它们。 在较小的规模上,可以使用一些工具来为用户提供更好的安全性。请考虑口令管 理问题。用户访问他们保存个人资料的Web站点,在可以存取他们的资料之前必须 经过验证。通过验证来鉴别用户,确保他们是所声称的用户。进行验证最简单方 式是使用口令。然而,若每个站点都需要各自的一套口令,用户将有难以控制的 大量口令。1998年微软首先尝试通过其Passport network提供该问题的全球解决 方案。Passport使得任意Web站点使用用户提交给Passport的个人资料(如用户名 、地址、信用卡号)成为可能。Passport是单点登录(single sign-on,SSO)的第 一次电子商务尝试。它没有流行起来,部分原因是由于人们对系统封闭性的担心 。然而,SSO的理念非常引人注目,许多开放标准和商业计划都追随Passport其后 。通过SSO,某个Web站点可以与其他站点共享用户身份信息。
SSO对于使用应用服务提供商(Application Service Provider,ASP)软件服务 的企业特别有用。ASP在自己的服务器上宿主应用程序,出售其访问权作为服务。 公司可以在它的标准目录服务器里管理自己的用户和口令,然后通过SSO授予用户 访问ASP应用程序的权限。SSO允许公司管理自己用户的信息,不必为每一员工维 护多个用户账号。对用户来说,SSO的好处在于他们可以在多个应用程序中使用一 个用户名和口令,并且在应用程序之间切换时无需重新验证。SSO不仅仅用于Web 应用程序,它可用于任何类型的应用程序,只要有安全地传送身份信息的协议。 这种通信方式的开放标准就是安全性断言标记语言(SAML)。
关于SAML
SAML为SSO提供了一个安全的协议。SAML(读作“sam-ell”)是允许Web站点安 全地共享身份信息的一个规范,它来自ebXML和其他XML标准背后的国际性联盟 OASIS。站点使用SAML的XML词汇表和请求/应答模式,通过HTTP交换身份信息。这 种信息共享标准化能帮助Web站点与多个合作伙伴集成,避免由于为不同合作伙伴 设计和维护各自私有的集成通道而引起的争论。SAML1.0于2002年11月亮相。本文 介绍最终于2003年完成的SAML1.1。虽然于2005年完成的SAML 2.0引入了支持身份 联邦的一些重要新功能,但BEA WebLogic Server 9.x支持的是SAML1.1,因此本 文将重点介绍SAML1.1。
一个基本的SAML示例
我们来看一个非常基本的SAML示例。顾名思义,SAML的核心元素是安全性断言 。断言即无需证明的语句。安全性断言是关于用户身份的语句,只能通过接收断 言发布者的站点信任获得支持。在SAML中,发布断言的站点叫“发布者”、“断 言方”、或“源站点”。接收断言并信任它们的站点叫“信任方”或“目标站点 ”。
在本示例场景中,用户使用用户名和口令登录源站点。然后,用户希望无需再 次验证即可访问目标站点。图1显示了源站点和目标站点之间能使用户通过单点登 录访问双方站点的交互。
图1:一个SAML示例场景