2017-03-03 26 views
0

我有一個安全的令牌服務(CXF)。它工作正常,如果用戶簽署消息(wsse:BinarySecurityToken)進行身份驗證。如何禁止使用特定標記類型的ws策略進行簽名?

現在必須使用相同的服務,如果用戶提供用戶名令牌。在這種情況下,用戶不得在消息上簽名。我無法給他一個不同的web服務地址 - 這將使得這非常簡單 - 打電話。

我已經執行了UsernameTokenValidator,一切工作,如果我刪除了我目前的政策:

<wsp:Policy wsu:Id="CertificateSecurityPolicy"> 
    <wsp:ExactlyOne> 
     <wsp:All> 
      <sp:Layout> 
       <wsp:Policy> 
        <sp:Lax/> 
       </wsp:Policy> 
      </sp:Layout> 
      <sp:IncludeTimestamp wsp:Optional="true"/> 
      <sp:SignedParts> 
       <sp:Body/> 
       <sp:Header Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/> 
       <wsu:Timestamp/> 
      </sp:SignedParts> 
     </wsp:All> 
    </wsp:ExactlyOne> 
</wsp:Policy> 

但如果我刪除此,那麼簽署,是不是強制性的,它打破了第一個用例。

任何想法我應該如何處理?是否可以修改策略,對於用戶名令牌來說簽名不是必需的:

<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" > 
    <wsse:UsernameToken> 
    <wsse:Username>username</wsse:Username> 
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password> 
    </wsse:UsernameToken> 
    </wsse:Security> 

或者我應該刪除所有策略嗎?在這種情況下?如果用戶簽署消息並提供wsse:BinarySecurityToken,是否會觸發X509驗證程序?

編輯:

這裏是解決我的問題感謝科爾姆ØhEigeartaigh^h

<wsp:Policy wsu:Id="issuePolicy"> 
     <wsp:ExactlyOne> 
      <wsp:All> 
       <sp:Layout> 
        <wsp:Policy> 
         <sp:Lax/> 
        </wsp:Policy> 
       </sp:Layout> 
       <sp:IncludeTimestamp wsp:Optional="true"/> 
       <sp:SignedParts> 
        <sp:Body/> 
        <sp:Header Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/> 
        <wsu:Timestamp/> 
       </sp:SignedParts> 
       <wssp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> 
        <wsp:Policy> 
         <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"> 
          <wsp:Policy> 
           <sp:WssX509V3Token10/> 
          </wsp:Policy> 
         </sp:X509Token> 
        </wsp:Policy> 
       </wssp:SupportingTokens> 
      </wsp:All> 
      <wsp:All> 
       <sp:Layout> 
        <wsp:Policy> 
         <sp:Lax/> 
        </wsp:Policy> 
       </sp:Layout> 
       <wssp:SupportingTokens> 
        <wsp:Policy> 
         <wssp:UsernameToken wssp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"> 
          <wsp:Policy> 
           <wssp:WssUsernameToken11/> 
          </wsp:Policy> 
         </wssp:UsernameToken> 
        </wsp:Policy> 
       </wssp:SupportingTokens> 
      </wsp:All> 
     </wsp:ExactlyOne> 
    </wsp:Policy> 

回答

相關問題