java – 当我不知道密码时,使用WS-Security进行身份验证

我正在使用WSS4JInInterceptor来尝试验证我的客户端.我已经能够创建一个简单的例子.但是,我有一个问题.在我的应用程序中,我使用提供的用户名和密码来尝试打开与数据库的连接.如果连接尝试成功,则用户已经过身份验证,否则登录尝试将被拒绝.使用WSS4JInInterceptor我需要实现一个返回用户密码的回调.在我的安全方案中,我无法访问此密码.我该如何实现这样的东西?

我应该继承WSS4JInInterceptor并破解它以提供密码吗?

解决方法:

在这里你去:下面你不会发现我使用回叫处理程序,因为不会真的需要(不是说你不能这样做,但这更简单).

<jaxws:endpoint id="myService" implementor="#myServiceImpl" address="/myService">
<jaxws:inInterceptors>
<bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
<ref bean="myServiceInterceptor"/>
</jaxws:inInterceptors>
<jaxws:properties>
<entry key="ws-security.ut.validator" value-ref="myServiceUsernameTokenValidator"/>
<jaxws:properties>
 </jaxws:endpoint>

<bean id=" myServiceInterceptor "   class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
 <constructor-arg>                              
 <map>
    <entry key="action" value="UsernameToken" />
    <entry key="passwordType" value="PasswordText" />
  </map>          
</constructor-arg>
</ bean>

在我的myServiceUsernameTokenValidator中,我直接连接UserDetailService,从DB获取哈希密码,然后简单地使用

 stringDigester.matches(passwordText, passwordDigest)
上一篇:java – 如何在传出的SOAP消息上应用XML签名


下一篇:java – CXF,XMLStreamWriter和Encoding