技术开发 频道

为SOA保驾护航(下)

【IT168 技术文章】

    为了便于管理,就要有策略储存库(policy repository)。这个管理工具可以为插入、修改及删除策略提供接口。它应当可以提供与请求者相关的所有策略,可以通过XML数据库获得策略。用于XML的简单API(SAX)解析器速度快、占用内存小,可以对XML数据进行解析。

    WSS

    WSS由结构化信息标准促进组织(OASIS)通过Web服务安全技术委员会开发而成,它定义了使用XML安全标准把数字签名和加密运用于SOAP文档的标准方法。WSS规定了如何保护在网络上传送的SOAP消息,包括验证、完整性保护和机密性。它没有规定如何实施访问控制,但提供了可用于这类控制的信息。WSS允许有选择地使用加密。譬如说,它允许应用防火墙检查未经加密的消息。

    此外,WSS允许基础设施选择方面有更大的灵活性。它不但可以利用X.509技术,还可以利用Kerberos、SAML或者普通的用户名和口令。因为WSS在SOAP层操作,所以它可以连同消息一起在整个网络上传输,即使该消息被查询或者被保存,也会保留下来。

    WSS使用W3C开发的XML签名语法和处理及XML加密两项标准。WSS的操作方式是,把名为security的XML元素插入到SOAP头里面。SOAP头包含了运用于该消息的验证、数字签名和加密方面的所有信息。它为接收方提供了对消息进行解密及验证所必不可少的信息。可以使用X.509证书、Kerberos票据、SAML声明或者其他方法来规定密钥和授权信息。

    带有<security>元素的SOAP信封示例如下:
<S:Envelope>
<S:Header>
<wsse:Security S:mustUnderstand="1"
xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">
<wsse:BinarySecurityToken EncodingType="wsse:Base64Binary">
MIIDQTCC4ZzO7tIgerPlaid1q ... [truncated]
</wsse:BinarySecurityToken>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
....XML Signature...
</ds:Signature>
</wsse:Security>
</S:Header>
<S:Body>
<m:OrderAircraft quantity="1" type="777" config="Atlantic"
xmlns:m="http://www.rdta.com/XMLDatabaseOrderSubmission"/>
</S:Body>
<S:Envelope>

    Web服务安全会话语言是另一项有用的规范――它允许使用对称密钥在Web服务请求方和Web服务之间创建会话。Web服务安全会话规范好比SSL,也涉及对称密钥协商过程,以简化加密消息的传输。微软的Web Services Enhancement 2.0工具包里面就含有Web服务安全会话规范,但目前还没有Java实现方案。Web服务安全会话范围如今也是WS-SX的一部分。

    SAML

    XML安全声明标记语言(SAML)定义了共享安全声明(包括验证和授权声明)的XML词汇,能够实现单次登记以及第三方管理这些功能。它还定义了请求/响应协议定义和XML协议(SOAP)绑定。SAML规范定义了一般的声明框架,允许为声明赋予有效期限,并允许声明可以针对特定受众(避免有可能被人滥用)。声明与特定的“主题”或者命名实体联系起来。

    SAML是一种标准方法,可以通过跨越领域界限的异构分布式系统,交换安全及相关的数据。授权和审查跟踪是大家熟悉的两项安全服务。在过去,大多数系统是基于这种假定而设计的:一个系统会拥有进行访问控制决策所需要的所有信息;所有消息会记录在审查跟踪里面。然而,大规模分布式系统总是由多家组织、使用多种产品共同组建而成的。因而,用户可能会由不同的认证中心使用不同的方法来加以验证。此外,不同的认证中心保留了有关用户特性和属性的不同信息。集中所有功能和信息根本就不切合实际。SAML提供了表示验证和用户属性的标准格式,并提供了请求及发送验证和用户属性的协议。

    SAML规范负责定义:

    表示验证和授权声明的词汇,允许表明验证和授权如何进行、何时进行的语句可以在多方之间传输。
    请求响应协议,以传输SAML声明以及XML协议(SOAP)绑定。
    惟一标识符(URN),用于不同的验证机制和授权操作。
    数字签名如何与声明进行联系。
    SAML Token Profile,它描述了SAML声明如何由<wsse:security>标头携带及引用、SAML声明如何结合XML签名语法和处理标准使用,从而把声明的语句(譬如claims语句)绑定到SOAP消息上。

0
相关文章