Java 当我不';我不知道密码

Java 当我不';我不知道密码,java,web-services,security,cxf,Java,Web Services,Security,Cxf,我正在使用WSS4JInInterceptor尝试验证我的客户端。我已经能够创建一个简单的示例。然而,我有一个问题。在我的应用程序中,我使用提供的用户名和密码尝试打开与数据库的连接。如果连接尝试成功,则表示用户已通过身份验证,否则,登录尝试将被拒绝。使用WSS4JInInterceptor,我需要实现一个返回用户密码的回调。在我的安全方案中,我无法访问此密码。我如何实现这样的功能 我是否应该将WSS4JInInterceptor子类化并对其进行黑客攻击以提供密码?您不能进行身份验证,然后从数据库

我正在使用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>
 stringDigester.matches(passwordText, passwordDigest)