特集
次世代XML Webサービスを試す Part 1
[改訂版]

3.セキュアXML Webサービスのクライアントの実装

インフォテリア株式会社
吉松 史彰
2003/01/10

Page1 Page2 Page3 Page4 Page5 Page6

WSEを使ったセキュアXML Webサービスのクライアントの実装

 WS-SecurityはSOAPの拡張であるため、ASP.NETが持っているHTTP-GETやHTTP-POSTによるXML Webサービスへのアクセス機能を使っても機能しない。機能させるためには、SOAPでアクセスする必要がある。SOAPでアクセスするには、コンソールやWindowsアプリケーションを開発して、「Web参照」機能を利用するのが簡単だ。ここではコンソール・アプリケーションを作成する。

コンソール・アプリケーションのプロジェクトを作成する

 ここでは名前を「WSEClient1」にした。

プロジェクトにMicrosoft.Web.Services.dllへの参照を追加する

 VS.NETの「参照の追加」機能で追加すればよい。

Web参照の追加を行う

 http://localhost/WSE1/Service1.asmx?wsdlに対してWeb参照を追加する。

作成されたプロキシ・クラスのソース・コードを変更する

 プロキシ・クラスのソース・コードは、Reference.csという名前で「Web References」の中の「localhost」の下にある。表示されない場合は、VS.NETのソリューション・エクスプローラで「すべてのファイルを表示」ボタンをクリックする。

変更内容は、プロキシ・クラス「WSE1Client1.localhost.Service1」の基底クラスを、

System.Web.Services.Protocols.SoapHttpClientProtocol

から、

Microsoft.Web.Services.WebServicesClientProtocol

にすることだけだ。

public class Service1 : Microsoft.Web.Services.WebServicesClientProtocol {
...
自動生成されるプロキシ・クラスの基底クラスを、Microsoft.Web.Services.WebServicesClientProtocolに変更する

Mainメソッドを実装する

 このメソッドの中でユーザー名とパスワードを設定する。内容は次のとおりだ。

static void Main(string[] args) {
  localhost.Service1 svc = new localhost.Service1();
  Microsoft.Web.Services.SoapContext
    ctx = svc.RequestSoapContext;
  Microsoft.Web.Services.Security.UsernameToken
    user = new Microsoft.Web.Services.Security.UsernameToken
    ("user1","pass1", Microsoft.Web.Services.Security.PasswordOption.SendPlainText);
  ctx.Security.Tokens.Add(user);

  string ret = svc.GetData();
  Console.WriteLine(ret);
}
クライアントとなるコンソール・アプリケーションのコード
ここでは、XML Webサービスの認証に必要なユーザー名とパスワードを設定し、XML Webサービスを呼び出す。

 通常のWeb参照を利用したクライアント・コードと違うのは、太字の部分だけだ。

 これでクライアントの開発もできた。さっそく実行してみよう。うまくいけば、コンソールには「Davolio」が表示されるはずだ。もちろん、「user1、pass1」は適切なSQL Serverのユーザーのものに置き換えなければならない。

 このとき、クライアントとサーバの間では次のようなSOAPメッセージがやりとりされている。

クライアントからサーバへ送信されるSOAPメッセージ例(IEで表示)
 
サーバからクライアントへ送信されるSOAPメッセージ例(IEで表示)

 クライアントから送信されているSOAPメッセージのHeader要素に注目してほしい。指定したユーザー名とパスワードが含まれているのが分かる。もちろんこのようにクリア・テキストでパスワードを送信することは通常は考えられないので、何らかの手順で暗号化を行うことになるだろう。WSEにもその機能が含まれているが、ここでは分かりやすくするためにクリア・テキストのままとした。

 このように、WSEを使えば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サービスを試す」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間