連載 XML Webサービスのセキュリティ実装 第1回 認証によるクライアントの識別 矢嶋 聡2003/05/21 |
|
|
1-3 クライアントからのログオン
ユーザーの認証が必要なXML Webサービスにアクセスするには、クライアント側のプロキシ・クラスにユーザー情報を設定する必要があります。ここでは、適当なXML WebサービスのクライアントをVisual Studio .NETで作成したとして*5(ここではそのプロジェクト名を「WinApp2」とします)、このWinApp2プロジェクトを使いながらその設定方法を説明します。
*5 編集部注:転載元の「VB.NETによるXML Webサービス開発」では、第8章「XML Webサービス・クライアントの作成」でXML Webサービスのクライアント作成について詳しく解説しています。WinApp2アプリケーションは、フォーム上の[実行]ボタンがクリックされるとXML Webサービスを呼び出すWindowsアプリケーションです。 |
まず、ソリューションWinApp2.slnを開いて、WinApp2プロジェクトを編集可能な状態にしてください。このプロジェクト内のプロキシ・クラスには、まだユーザー情報が設定されていません。今の状態のままでプログラムを実行して、WebSrv1へのアクセスを試みると、アクセスが拒否され、次のメッセージが表示されます(図6)(このメッセージが表示された場合、[終了]ボタンをクリックして、プログラムの実行を終了してください)。
図6 ログオンに失敗しエラーメッセージを表示する |
特定のユーザー・アカウントでログオンしてXML Webサービスにアクセスするには、次の5行目のようにNetworkCredentialsオブジェクトを作り、プロキシ・クラスのCredentialsプロパティに設定します。ここで、次のコードをWinApp2のボタンのイベント・ハンドラButton1_Clickに入力してください*6(ユーザー名とパスワードは現在のマシンで有効なユーザー・アカウントを使ってください)。
*6 編集部注:XML Webサービスのサンプル・クライアントである「WinApp2」では、フォーム上のボタンがクリックされるとXML Webサービスを呼び出します。以下の「リスト1」では、localhost.Service1がXML Webサービスのプロキシ・クラスです。また、6行目で呼び出しているAddメソッドが、XML Webサービスである「WebSrv1」が提供しているメソッドです。 |
|
|
リスト1 特定のユーザー・アカウントでアクセスする |
5行目のNetworkCredentialsクラスは、System.Net名前空間に属するので、1行目のImportsステートメントをファイルの先頭部分に追加するか、プロジェクト・プロパティにこの名前空間のインポートを指定してください*7。
*7 編集部注:転載元の「VB.NETによるXML Webサービス開発」では5-3-2「名前空間のインポート」で、名前空間のインポートについて解説しています。 |
結局必要なのは、5行目の記述です。プロキシ・クラスには、Credentialsプロパティがあらかじめ用意されており、XML Webサービスにアクセスする前に、このプロパティに任意のNetworkCredentialsクラスのインスタンスを設定します。NetworkCredentialsのインスタンスを作成する際には、コンストラクタの引数にユーザー名("taro")とパスワード("pass")を指定します*8。
*8 転載元の「VB.NETによるXML Webサービス開発」では、8-1-3「プロキシ・クラスの利用」のPOINT「コンストラクタ」で、このコンストラクタについて解説しています。 |
ここでビルドして実行し、フォーム上の[実行]ボタンをクリックすると、WinApp2アプリケーションは指定されたパスワードを使ってログオンして、XML Webサービスにアクセスすることができます。
確認が済んだら、これ以降のために、IIS側の認証方法を「匿名アクセス」と「統合Windows認証」の2つに戻してください(図4「認証方法の設定画面」で認証方法を元に戻してください)。また、ソース・コードからは、NetworkCredentialsを設定した行をコメント化しておいてください。
■TIPS 統合Windows認証の利用
もし、IIS側で統合Windows認証を選択し、クライアント側のWindowsアプリケーションが現在ログオンしているアカウントを使って、そのまま透過的にログオンしたいのであれば、5行目は次のように書きます。
srv.Credentials = CredentialCache.DefaultCredentials
CredentialCacheクラスのDefaultCredentialsプロパティは、そのアプリケーション(ここではクライアント)が現在ログオンに使用しているユーザー情報を表しています。
VB.NETによる XML Webサービス開発 本記事は@ITハイブックスシリーズ「VB.NETによる XML Webサービス開発」(インプレス)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。 |
INDEX | ||
連載 XML Webサービスのセキュリティ実装 | ||
第1回 認証によるクライアントの識別 | ||
1-1 ASP.NETを含むセキュリティ構成 | ||
1-2 ASP.NETでの認証設定 | ||
1-3 クライアントからのログオン | ||
「連載 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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|