Web服务安全标准(Web Services Security,WSS)定义了保护Web服务所使用消息的机制。这项标准是由结构信息标准推进组织(OASIS)下属的Web服务安全技术委员会开发的。
Web服务利用XML定义的简单对象访问协议(SOAP)消息进行通信。这些消息主要通过HTTP进行传输,在原则上也可以利用任意下层协议进行传输。
WSS提供了加密、签名和认证SOAP消息的框架,还定义了用于提供完整性(写)保护、保密性(读)保护和认证的XML元素。在提供这些功能时,WSS除了利用其他规范外,还增加了一些关键元素。WSS引用W3C联盟推荐的XML数字签名和XML加密建议,来实现数字签名和加密。
处理XML文档数字签名的过程十分复杂,空格可以添加或删除,冗余的声明也可以移动或删除,这些变化容易引起签名验证错误。XML文档需要一种标准化、规范化的格式,使发送方对规范格式进行计算和签名,接收方也对规范格式进行签名验证。
WSS使Web服务利用不同系统通过令牌分发密钥和其他认证信息成为可能。X.509证书和Kerberos规范以二进制令牌传送,而SAML机制和XrML许可证则是XML令牌。WSS还定义了用户名令牌,使用户名令牌可以与口令一起使用。
WSS定义的最重要的新元素叫作安全元素,包括与消息保护有关的XML元素。安全元素出现在SOAP报头中,每个接收消息的节点可以包含一个安全元素。通过安全元素,发送方告诉接收方各种信息,包括哪些数据被签名,哪些数据被加密以及执行这些操作的次序和使用的密钥。通过WSS,发送方可以规定安全信息的创建和失效日期。当令牌在一条消息中被使用一次以上时,WSS还提供一个安全令牌证书,指向用于不同环境的令牌。
Kerberos、SSL/TLS等规范给出了详细的使用模式,并且通过添加元素来实现和优化功能。与Kerberos、SSL/TLS不同的是,WSS没有规定消息交换和加密操作,不过WSS可以直接用来满足简单的需要,如签名或加密一条消息的不同部分。
WSS是由核心规范和说明每一种令牌类型的概要文件构成。今年4月,OASIS组织批准了“WSS:SOAP消息安全性1.0”核心规范、“WSS:用户名令牌概要文件1.0”以及“Web服务安全:X509令牌概要文件1.0”。WSS技术委员会现在正在开发SAML、Kerberos和XrML令牌概要文件。
WSS允许进行签名加密选定的消息部分,消息可以在一个节点上被签名,另外的数据可以在第二个节点上被添加和签名,最后再由接收方验证。中间节点可以处理消息的不同部分,尽管消息的其他部分已经被加密。SSL/TLS则不提供这些功能。