如何禁用针对特定令牌类型的 ws 策略签名?
How can I disable signing with ws policy for a specific token type?
我有安全令牌服务 (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>
我有安全令牌服务 (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>