如何禁用针对特定令牌类型的ws策略签名?

时间:2017-03-03 08:52:19

标签: web-services cxf ws-security

我有安全令牌服务(CXF)。如果用户签署消息(wsse:BinarySecurityToken)进行身份验证,它可以正常工作。

如果用户提供用户名令牌,则必须使用相同的服务。在这种情况下,用户不得签署该消息。我不能给他一个不同的网络服务地址 - 这会让这很容易 - 打电话。

当我删除当前的政策时,我已经实施了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验证器?

修改

感谢Colm O 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>
相关问题