ダイジェスト認証を必要とするWebサービスに接続するクライアントをJavaで作成したいと思います。私はJavaとJavaスタックに精通していないので、調査を行い、jax-ws、axis2、xcf、およびmetroに出くわしました。JAX-WSはAPIであり、JDKにはリファレンス実装がありますが、ダイジェスト認証のサポートがないことを学びました。
私が最初に試みたのは、Eclipse IDEにaxis2のサポートが組み込まれているため、axis2を使用することでした。次のコードはダイジェスト認証ワークフローに従っているようですが、どういうわけかそれでも最終的に認証に失敗します。
Service1Stub stub = new Service1Stub();
HttpTransportProperties.Authenticator authenticator = new Authenticator();
List<String> authSchemes = new ArrayList<String>();
authSchemes.add(Authenticator.DIGEST);
authenticator.setAuthSchemes(authSchemes);
authenticator.setUsername("doman user");
authenticator.setPassword("domain password");
authenticator.setPreemptiveAuthentication(true);
Options options = stub._getServiceClient().getOptions();
options.setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE, authenticator);
options.setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED, org.apache.axis2.Constants.VALUE_FALSE);
GetData getData = new GetData();
getData.setValue(25);
GetDataResponse data = stub.getData(getData);
System.out.println(data.getGetDataResult());
2番目の試みはメトロフレームワークを使用することでしたが、JAXBバージョンに関連するいくつかのエラーが発生します。
java.lang.LinkageError: JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI needs 2.2 API.
JDK 1.6.0_03を使用する必要があるため、これはJDKのバージョンの不一致が原因で発生していると思いますが、展開中に多くの問題が発生する可能性があるため、推奨される「承認済みディレクトリメカニズム」も使用したくありません。
私は完全に迷子になっていて、Javaでのダイジェスト認証を必要とするWebサービスを利用するための最も簡単で、最も速く、最新の方法を探していますか?できれば、依存関係をできるだけ少なくしてください。