我在WebLogic上部署了一个具有usernameToken安全策略的Web服务。我实现了自己的Java密码验证器(扩展了com.sun.xml.wss.impl.callback.PasswordValidationCallback.WsitDigestPasswordValidator)。
<wsp:Policy wsu:Id="DoubleItBindingPolicy">
<wsp:ExactlyOne>
<wsp:All>
<wsam:Addressing wsp:Optional="false"/>
<sp:TransportBinding>
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128/>
</wsp:Policy>
</sp:AlgorithmSuite>
</wsp:Policy>
</sp:TransportBinding>
<sp:SignedEncryptedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedEncryptedSupportingTokens>
<sc:ValidatorConfiguration wspp:visibility="private">
<sc:Validator name="usernameValidator" classname="service.PasswordValidator"/>
</sc:ValidatorConfiguration>
<sp:Wss11/>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
我的问题是,当我尝试使用包含安全标头的SOAP消息调用我的Web服务时,标头将被完全忽略,就好像Web服务没有附加安全性一样。
我尝试在WebLogic控制台中创建一个新的Web Service Security配置,并使用注释WssConfiguration在我的服务类中引用它,但结果是相同的。
我还尝试在我的WebService中添加WS-Policy(策略:Wssp1.2-2007-Wss1.1-UsernameToken-Digest-DK.xml),但仍然是相同的。
您能否告诉我如何在WebLogic中激活SOAP消息安全标头的验证?