2011-11-18 6 views
4

WSS4JInInterceptorを使用してクライアントを認証しようとしています。私は簡単な例を作ることができました。しかし、私には問題があります。私のアプリケーションでは、指定されたユーザー名とパスワードを使用してデータベースへの接続を開こうとします。接続試行が成功した場合、ユーザーは認証済みで、ログイン試行が拒否されます。 WSS4JInInterceptorを使用して私は、ユーザーのパスワードを返すコールバックを実装する必要があります。私のセキュリティ計画では、私はこのパスワードにアクセスすることができません。このようなものを実装するにはどうすればよいですか?パスワードがわからないときにWS-Securityを使用して認証する

WSS4JInInterceptorをサブクラス化し、パスワードを提供するためにハックする必要がありますか?

答えて

1

ここに行きます:私はコールバックハンドラを使用して私を見つけることはありません。なぜなら、実際にはそれが必要なのではないからです(そうしないと言っているわけではありませんが、もっとシンプルです)。私myServiceUsernameTokenValidator

<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> 

、私が直接、UserDetailServiceをアップ配線DBからハッシュされたパスワードを取得し、その後、単にデータベースにのみ、クリアテキストのパスワードを保持しません

stringDigester.matches(passwordText, passwordDigest) 
1

データベースからユーザーのパスワードを認証して取得できませんか?あなたがそれを要求することができれば、あなたはそれをデータベースにうまく収めていたかもしれません。もちろん、パスワードやデータベースを保護する必要があります。

+0

を使用して検証しています何らかのハッシュしたがって、管理者と接続してもクリアテキストのパスワードを取得する方法はありません。 –

関連する問題