2016-06-28 4 views
1

私のクライアントにUsernameToken wssヘッダーを追加しようとしています。 クライアントはjavax.xml.ws.Serviceを実装し、WSDLがCXF UsernameToken Issue

<wsp:Policy xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy" wsu:Id="UsernameTokenPolicy"> 

    <sp:UsernameToken> 
     <wsp:Policy> 
      <sp:WssUsernameToken10/> 
      <sp:HashPassword/> 
     </wsp:Policy> 
    </sp:UsernameToken> 

</wsp:Policy> 

のUsernameTokenヘッダが付加されなければならない含まれているのでWSDL2JavaのCFX 3.1.4

介して生成されています。

These policy alternatives can not be satisfied: 
{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}UsernameToken: Password hashing policy not enforced 

何かアドバイスを:私は、私は次のエラーを取得する呼び出しを実行しようとすると、これはちなみに

((BindingProvider)soapClient).getRequestContext().put("ws-security.username", usr); 
((BindingProvider)soapClient).getRequestContext().put("ws-security.password", psw); 

ように簡単であることを発見したビットをお探しですか? ありがとうございます。

P.S.私はすでに、スタックオーバーフローに似たポストのためにチェックしましたが、私はdifferenteのアプローチを試みる場合は、1つはhereを示唆したように私は別のエラーを得た:

Interceptor for XXXX has thrown exception, unwinding now 
org.apache.cxf.ws.policy.PolicyException: No username available 

答えて

1

cxf-documentation状態として

From Apache CXF 3.1.0, the WS-SecurityPolicy and the XML Security (JAX-RS) components in CXF share a common set of configuration tags.

をだから、またCXF-RT-WS-ポリスていることを確認してくださいws-security.usernamews-security.passwordが、security.usernamesecurity.password

を使うべきではありませんyおよびcxf-rt-ws-securityモジュールがクラスパスで使用可能になるため、ws-policyが自動的に有効になり、パスワードのハッシュ処理、つまり正しいパスワードダイジェストを計算します。