WEB开发网
开发学院WEB开发Jsp Java Web Services:不使用客户端证书的WS-Securit... 阅读

Java Web Services:不使用客户端证书的WS-Security

 2010-10-26 12:59:21 来源:Web开发网   
核心提示:不使用客户端证书的 WS-SecureConversation在使用 WS-SecureConversation 时,您可以使用相同的技术在没有客户端证书的情况下处理客户端和 Security Token Service (STS) 之间的消息交换,Java Web Services:不使用客户端证书的WS-Secur

不使用客户端证书的 WS-SecureConversation

在使用 WS-SecureConversation 时,您可以使用相同的技术在没有客户端证书的情况下处理客户端和 Security Token Service (STS) 之间的消息交换。(阅读 “WS-Trust 和 WS-SecureConversation” 和 “WS-SecureConversation 性能” 了解 WS-SecureConversation 的细节。)要使用这种方法,您基本上需要将 清单 1 的策略替换为 <sp:BootstrapPolicy>,以实现安全会话。清单 2 显示了这是如何工作的,它用粗体显示的 <sp:SymmetricBinding> 替换 “WS-SecureConversation 性能” 中使用的 <sp:AsymmetricBinding>:

清单 2. WS-SecureConversation 中不使用客户端证书的 WS-Policy

<wsp:Policy wsu:Id="SecureConv"
 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>
  <sp:SymmetricBinding>
  <wsp:Policy>
   <sp:ProtectionToken>
   <wsp:Policy>
    <sp:SecureConversationToken
     sp:IncludeToken=".../IncludeToken/AlwaysToRecipient">
    <wsp:Policy>
     <sp:BootstrapPolicy>
     <wsp:Policy>
      <sp:SymmetricBinding>
      <wsp:Policy>
       <sp:ProtectionToken>
       <wsp:Policy>
        <sp:X509Token sp:IncludeToken=".../IncludeToken/Never">
        <wsp:Policy>
         <sp:RequireDerivedKeys/>
         <sp:RequireThumbprintReference/>
         <sp:WssX509V3Token10/>
        </wsp:Policy>
        </sp:X509Token>
       </wsp:Policy>
       </sp:ProtectionToken>
       <sp:AlgorithmSuite>
       <wsp:Policy>
        <sp:Basic128Rsa15/>
       </wsp:Policy>
       </sp:AlgorithmSuite>
       <sp:Layout>
       <wsp:Policy>
        <sp:Strict/>
       </wsp:Policy>
       </sp:Layout>
      </wsp:Policy>
      </sp:SymmetricBinding>
      <sp:Wss11>
      <wsp:Policy>
       <sp:MustSupportRefKeyIdentifier/>
       <sp:MustSupportRefThumbprint/>
       <sp:MustSupportRefEncryptedKey/>
      </wsp:Policy>
      </sp:Wss11>
      <sp:EncryptedParts>
      <sp:Body/>
      </sp:EncryptedParts>
     </wsp:Policy>
     </sp:BootstrapPolicy>
    </wsp:Policy>
    </sp:SecureConversationToken>
   </wsp:Policy>
   </sp:ProtectionToken>
   <sp:AlgorithmSuite>
   <wsp:Policy>
    <sp:Basic128Rsa15/>
   </wsp:Policy>
   </sp:AlgorithmSuite>
   <sp:Layout>
   <wsp:Policy>
    <sp:Strict/>
   </wsp:Policy>
   </sp:Layout>
  </wsp:Policy>
  </sp:SymmetricBinding>
  <sp:EncryptedParts>
  <sp:Body/>
  </sp:EncryptedParts>
 </wsp:All>
 </wsp:ExactlyOne>
</wsp:Policy>

除了使用客户端生成的使用 STS 进行消息交换的密钥,通过去除 <wsap:UsingAddressing> 断言, 清单 2 中的策略也与 “WS-SecureConversation 性能” 中所使用的不同。

理论上,这个策略可以处理任何的 WS-Security 和 WS-SecureConversation 实现。实践中,当我在三个主流开源 Java Web Service 工具尝试这个配置时遇到了一些问题。CXF 是唯一能够正常运行所编写的策略的工具。Axis2 完全不能运行,它在处理 STS 响应消息时会出现客户端异常错误。当我将辅助程序策略修改回不对称加密方式时,Axis2 能够运行,但是它在所有消息上使用 WS-Addressing。Metro 也会出错;在我重新添加 <wsap:UsingAddressing> 时,它能够处理客户端为 STS 消息传递的对称加密所生成的密钥。

上一页  1 2 3 4  下一页

Tags:Java Web Services

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接