私はCXFのWS-security実装(usernametoken)と一緒にしようとしています。http://cxf.apache.org/docs/ws-security.htmlで述べられているようにすべてを実行しました。PasswordCallbackHandlerは機能しているようですが、気になるのはその一部です。
if (pc.getIdentifier().equals("joe")) {
// set the password on the callback. This will be compared to the
// password which was sent from the client.
pc.setPassword("password");
}
言われるように
CXF 2.3.xまでの場合、プレーンテキストパスワード(またはその他のまだ不明なパスワードタイプ)の特殊なケースのパスワード検証がコールバッククラスに委任されることに注意してください。org.apache.ws.securityを参照してください。 WSS4Jプロジェクトのprocessor.UsernameTokenProcessor#handleUsernameToken()メソッドjavadoc。その場合、ServerPasswordCallbackは次のようになります。
したがって、cxf 2.3.xまでは、そのように実行されていました。
if (pc.getIdentifer().equals("joe") {
if (!pc.getPassword().equals("password")) {
throw new IOException("wrong password");
}
}
私の問題は、pc.setPassword( "plainTextPassword")を任意のリソースに保存したいので、したくないということです。この2.3.xまでの設計では、手動で暗号化できるため、これを実行できます。コールバックで暗号化されたパスワードを設定したり、保存された暗号化されたパスワードに対してユーザー名トークン認証を行う方法はありますか?
私はcxf2.5.xを使用しています