我在具有 usernameToken 安全策略的 WebLogic 上部署了一个 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 服务安全配置,并使用注释 WssConfiguration 在我的服务类中引用它,但结果是相同的。
我还尝试将 WS-Policy 添加到我的 WebService (策略:Wssp1.2-2007-Wss1.1-UsernameToken-Digest-DK.xml),但仍然相同。
您能否告诉我如何在 WebLogic 中激活我的 SOAP 消息安全标头的验证?