Java Web 服务: WS-Trust 和 WS-SecureConversation
2010-07-16 00:00:00 来源:WEB开发网当客户机想要开始与服务器交换消息时,它首先会联系此 STS 并建立上下文。此消息,如 图 1 中的消息 1 所示,指定了动作 http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT。此响应,消息 2,则向客户机提供了此 SCT。上下文在消息 3 中被引用,由它指定与实际的服务应用程序相关的任何动作。在此时间区间内,这个 SCT 在自此客户机至此服务的任何连续消息中均有效。消息 3 和 4 使用了基于共享秘密的对称加密,客户机和服务之间的所有后续消息也是如此。服务应用程序使用由此客户机提供的上下文引用来直接访问来自这个上下文(由 STS 保存的)的共享秘密。
WS-Policy 配置
WS-SecureConversation 使用的 WS-Policy 和 WS-SecurityPolicy 配置与本系列之前的文章中讨论的基本 WS-Security 处理所使用的配置相似。一个大的区别在于当使用 WS-SecureConversation 时,此策略必须涵盖两种不同的交换 — 即客户机与 STS 之间的交换以及客户机与实际的服务之间的交换。对于与 STS 之间的交换,可在策略描述中通过使用一个嵌套的策略加以处理,而此策略的主体则用于客户机与服务之间的交换。
清单 3 显示了用在本文的示例中的策略:
清单 3. 示例 WS-SecureConversation 策略
<wsp:Policy wsu:Id="SecConv"
xmlns:wsu=".../oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:ExactlyOne>
<wsp:All>
<wsap:UsingAddressing xmlns:wsap="http://www.w3.org/2006/05/addressing/wsdl"/>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken sp:IncludeToken=".../AlwaysToRecipient">
<wsp:Policy>
<sp:RequireDerivedKeys/>
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken=".../AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken=".../IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:TripleDesRsa15/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:SignedParts>
<sp:Body/>
<sp:Header Name="To" Namespace=".../addressing"/>
<sp:Header Name="From" Namespace=".../addressing"/>
<sp:Header Name="FaultTo" Namespace=".../addressing"/>
<sp:Header Name="ReplyTo" Namespace=".../addressing"/>
<sp:Header Name="MessageID" Namespace=".../addressing"/>
<sp:Header Name="RelatesTo" Namespace=".../addressing"/>
<sp:Header Name="Action" Namespace=".../addressing"/>
</sp:SignedParts>
<sp:Trust13>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust13>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128Rsa15/>
</wsp:Policy>
</sp:AlgorithmSuite>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
更多精彩
赞助商链接