ベーシック認証が設定されているWebサービスへのアクセス方法

JAX-WSを利用して、ベーシック認証が設定されているWebサービスへアクセスする方法は以下。

import javax.xml.ws.BindingProvider;

HelloPort port = helloService.getHelloPort();
BindingProvider bp = (BindingProvider)port;

Map<String, Object> reqContext = bp.getRequestContext();
reqContext.put(BindingProvider.USERNAME_PROPERTY, "username");
reqContext.put(BindingProvider.PASSWORD_PROPERTY, "password");

参考:https://jax-ws.dev.java.net/faq/index.html#auth

ちなみに、JAX-WS 2.1の場合はBindingProviderの代わりに、BindingProviderを継承し機能拡張したWSBindingProviderを利用する事も出来る。


【追記】
JAX-WSの旧バージョンにあたるJAX-RPCの場合、上記のBindingProviderクラスは利用出来ない。しかし、以下のようなコードで同等の事が実現できる。

import javax.xml.rpc.Stub

HelloPort port = helloService.getHelloPort();
HelloPort_Stub stub = (HelloPort_Stub)port;

stub._setProperty(Stub.USERNAME_PROPERTY, "username");
stub._setProperty(Stub.PASSWORD_PROPERTY, "password");

参考:Webサービスの基礎(2004年度ソフトウェア特論)