特集
|
ほかのWS-Security実装との相互運用
IBMはalphaWorksという、やはりTechnology Preview的な位置付けのソフトウェアを配布するWebサイトで、Web Services Toolkit(以下WSTK)を提供している。2002年8月26日に配布が開始されたバージョン3.2.2では、WS-SecurityやDIMEなどをサポートしている。MicrosoftのWSEの実装が、将来的には.NET FrameworkやEnterprise Servers製品へ反映されるのと同様に、WSTKの実装も多くはWebSphere製品に反映されていくだろう。
本格的なテストは当然MicrosoftとIBMが協力して行っているが、ここでも簡単に相互運用性の検証をしてみよう。なお、WSTKの実装はJavaベースであり、XML WebサービスをホスティングするWebアプリケーションは、Apache Axisを想定している。Apache Axisのインストールなどはここでは省略するので、@ITのJava Solutionフォーラムなどを参考にしてほしい。
■JavaクライアントからWS-Securityで呼び出す
まずはWSTK送信者→WSE受信者という組み合わせを実施してみる。WSE側は、先ほど開発したXML Webサービスをそのまま利用する。WSTKの送信側は次のように開発した。なお、CLASSPATH環境変数の値は、WSTKのインストール時のものに適切に設定されているものとする。
WSDL2Javaを使って、WSDLからJavaのソース・コードを作成する
ASP.NETは自動的にWSDLを生成するので、ここでは素直にそれを利用する。次のコマンドでJavaのソース・コードが生成される。
% java org.apache.axis.wsdl.WSDL2Java http://localhost/WSE1/Service1.asmx?wsdl
で作成されたクラスを参照して、次のコードを作成する
これがクライアントの実体となる。
|
|
WSDL2Javaツールを使用して作成されたクラスを参照するクライアント・コード(Java) |
上記のソース・コードをコンパイルする
% javac DataGetter.java
ここまでは通常のXML Webサービスのクライアントを作成する手順だ。これだけではWS-Securityで要求されるヘッダは作成されない。そこで、WSTKの出番となる。WSTKにはWS-Securityのヘッダを付ける機能がある。なお、WSTKのドキュメントにはあまりにも何も書いていないので、下記の説明は筆者がWSTKをトライ&エラーで解析した結果、うまく動作した手順を再現したものだ。WSTKの本来的な使い方ではないかもしれないことをお断りしておく。
Axisのクライアント配布機能を使ってクライアントのパイプラインを作成する
以下のファイルをclient_deploy.wsddという名前で保存する。
|
|
Axisのクライアント配布機能を使って、クライアントのパイプラインを作成するための設定ファイル(ファイル名はclient_deploy.wsdd) |
SecuritySender.xmlファイルの中身は次のとおりだ。
|
|
client_deploy.wsddで参照しているSecuritySender.xmlファイルの内容 |
identity.xmlファイルの中身は、ユーザー名とパスワードである。
|
|
client_deploy.wsddで参照している、ユーザー名とパスワードを含んだidentity.xmlファイルの内容 |
上記のファイルを使って次のコマンドで設定する。
% java org.apache.axis.utils.Admin client client_deploy.wsdd
これらのファイルとコマンドが何をしているかの解説は、本稿の趣旨から大きく外れるので省略する。要するに、identity.xmlファイルに設定されているユーザー名とパスワードをそのままWS-Securityのヘッダに設定してくれる。
次のコマンドでプログラムを実行する
% java DataGetter
うまくいけば次のようなSOAPメッセージが生成されて、ASP.NETに送信され、結果が送り返される。
WSTKを使用したJavaクライアントから、ASP.NETサーバへ送信されるSOAPメッセージ例(IEで表示) |
ASP.NETサーバから、Javaクライアントへ送信されるSOAPメッセージ例(IEで表示) |
そういうわけで、WSTKを使えばJavaのクライアントからもWS-Securityを使ったセキュアなXML Webサービスへのアクセスが可能となる。
INDEX | ||
[特集]次世代XML Webサービスを試す Part 1 | ||
1.WSEのインストール | ||
2.WSEを使ったセキュア XML Webサービスの実装 | ||
3.セキュアXML Webサービスのクライアントの実装 | ||
4.ほかのWS-Security実装との相互運用(1) | ||
5.ほかのWS-Security実装との相互運用(2) | ||
「特集:次世代XML Webサービスを試す」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|