揭开Java 安全标准的神秘面纱

1/5/2008来源:Java教程人气:7041

在过去的三年中,人们开发出了许多关于信息安全(Information Security)的新标准。

其中最为人们所认可的是Web Services安全性(Web Services Security,WSS)、安全性断言标记语言(Security Assertion Markup Language,SAML)和可扩展访问控制标记语言(Extensible access Control Markup Language,XACML)。本文会简单介绍这三者,包括它们是如何开发出来的、为什么需要它们、如何使用它们、它们之间以及它们与现有各种安全性标准之间的关联。以后的文章会对这些内容进行更具体的介绍。

简介

WSS、SAML和XACML之间有许多共性。或许最明显的就是它们都使用xml表示信息。其次是,因为这三种可用的安全服务都已经在计算机系统中应用多年了,为了更加适用于大型分布式环境,如互联网,它们都具有一些特定的功能。此外,三者都参考并结合了现有的安全性标准,并尽量减少对已有功能的重复。

两个主要原因促使三者都采用了XML技术。第一,XML使它们便于扩展,以便可以以一种原有格式无法实现的方式来满足某种非凡需求。第二,XML支持采用大量可用的软件工具进行处理的实现。对于WSS来说,还有一个原因,即,WSS被设计为支持与SOAP的语法和处理模型进行紧密集成,而SOAP是用XML定义的。

SAML

授权和审计跟踪是常见的安全服务。以前,大多数系统设计时都假设做出访问控制决定所必需的所有信息都由单个系统来处理,并且所有要记录的数据都放在审计跟踪中。但是,大规模分布式系统通常是由多个组织使用各种产品建立的。这意味着用户可能要由不同的验证方使用不同的方法进行验证。此外,不同的验证方还要保存有关用户特性和属性的不同信息。集中治理所有这些能力和信息是不现实的。SAML提供了标准格式来表示身份验证、用户属性以及请求和接受该标准的协议。这被称为身份联盟(Identity Federation)。

在OASIS的最初开发阶段,SAML只指定了该身份信息的生产者与消费者之间的通信。SAML定义了如何创建有关用户属性和身份验证事件的断言,以及如何以一种灵活而可扩展(以便满足其它需求)的方式获得这些信息。SAML还具体定义了一些常见场景(如:Web单点登录)来确保互操作性。

Liberty Alliance PRoject和Internet2 Shiboleth group进一步地增强和扩展了SAML。增加了许多新功能,以便支持SAML验证方之间的通信,更加具体地描述身份验证方法,注销用户并保护隐私。这些工作又提交给OASIS,并合并到SAML2.0中,SAML2.0在2005年3月成为一个OASIS标准。SAML被设计为用于多种不同的环境,支持使用不同的身份验证和加密方法。它支持各种不同的消息流,甚至可以用于不使用XML的遗留环境中。

XACML

XACML,也是由OASIS开发的,是一种表示访问控制策略的语言。大多数计算机专业人士都熟悉基于权限或访问控制列表(ACL)的访问控制。但是,这些机制缺少表示复杂策略(在现实系统中经常需要用到)的能力。因此,访问控制策略通常会嵌入应用程序代码中。这使得更改策略(或者只是找出哪些策略正在实施)变得很困难。

XACML能够实际地使用任何可用的信息来决定是否该许可对一个资源的访问。也可以关联附加的动作、被调用的契约和决定,例如,要求请求的数据在90天后删除。

XACML可以根据资源的属性做出决定,包括资源的内容或环境因素,如日期、时间或位置。它也会考虑到与请求关联的各方的特性,比如角色或组成员关系。这可能不只包括请求方,还包括其他方,比如接受数据方或请求中转方。

XACML 2.0在2005年2月成为一个OASIS标准。它在具有多个创建策略的治理员的大规模环境中运行良好。因为SAML可用于任何访问控制系统,XACML可以与SAML一起使用,或者单独使用。有专门的支持它们一起工作的特性。

WSS

WSS指定了如何保护通过网络传递的SOAP消息。它包括身份验证、完整性保护和保密性。它没有指定如何实现访问控制,但提供了可以用于访问控制的信息。在WSS出现之前,最常见的保护消息的方法是使用SSL或TLS协议。这些协议仍然适用于许多应用程序,但WSS提供了更多的功能和灵活性。