Cosminexus V9 アプリケーションサーバ Webサービスセキュリティ構築ガイド
JAX-WS機能を使用して開発したWebサービスに対して認証機能を設定したい場合,Webサービスセキュリティ機能が提供するAPIを利用すると,メッセージ内のUsernameToken要素を操作できます。ここでは,UsernameToken要素を操作することで,認証情報を取得または設定する方法を説明します。
Webサービスが受信したメッセージの認証情報は,JAX-WS機能のサポート範囲内でアクセスできるメッセージコンテキストから取得します。手順を次に示します。
これらの手順に従って,Webサービス実装クラスTestJaxWsImplのメソッドjaxWsTest()でメッセージコンテキストを取得する例を示します。
import javax.annotation.Resource; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; import com.cosminexus.wss.element.WSSConstants; ・・・ public class TestJaxWsImpl { @Resource WebServiceContext wsContext; public String jaxWsTest() throws UserDefinedException { ・・・ MessageContext msgContext = wsContext.getMessageContext(); Object obj = msgContext.get(WSSConstants.WSS_RECV_ELEMENTPROXY); ・・・ } }
Webサービスクライアントが送信するメッセージに認証情報を設定したい場合,JAX-WS機能のサポート範囲内のメッセージコンテキストを設定します。手順を次に示します。
これらの手順に従って,WebサービスクライアントのTestClientクラスを利用してメッセージコンテキストを取得する例を示します。
import java.util.Map; import javax.xml.ws.BindingProvider; import com.cosminexus.wss.element.WSSConstants; import com.cosminexus.wss.element.WSSElementProxy; import com.cosminexus.wss.element.WSSElementProxyBuilder; import com.example.sample.TestJaxWs; import com.example.sample.TestJaxWsService; ・・・ public class TestClient { public static void main( String[] args ) { ・・・ TestJaxWsService service = new TestJaxWsService(); TestJaxWs port = service.getTestJaxWs(); ・・・ WSSElementProxyBuilder proxyBuilder = WSSElementProxyBuilder.newInstance(); WSSElementProxy proxy = proxyBuilder.createWSSElementProxy(); ・・・ Map<String, Object> context = ((BindingProvider) port).getRequestContext(); context.put(WSSConstants.WSS_SEND_ELEMENTPROXY, proxy); ・・・ }
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.