連載 XML Webサービスのセキュリティ実装

第1回 認証によるクライアントの識別

矢嶋 聡
2003/05/21

Page1 Page2 Page3

 
 本記事は、インプレスが発行する書籍『VB.NETによるXML Webサービス開発』の第10章「XML Webサービスのセキュリティ実装」を、許可を得て転載したものです。同書籍に関する詳しい情報については、本記事の最後に掲載しています。

 本連載では、Visual Basic .NET(以下VB.NET)とASP.NETを用いて構築したXML Webサービスで利用可能ないくつかのセキュリティ制御について取り上げます。厳密にいえば、XML Webサービスのセキュリティではなく、ASP.NETが提供するセキュリティであり、ここで取り上げる考え方はWebフォームにも適用できます。また、ASP.NETはIIS上で動作するため、IISのセキュリティ機能を併用することもあります。本稿でも、クライアントとサービスとの間でやりとりされるデータの暗号化については、ASP.NETの機能ではなく、IISが提供するSSLについて説明しています。さらに、サービスとクライアントとの間で、ファイアウォールを経由する場合もあります。その場合、クライアント側のプロキシ・クラスが、ファイアウォールを経由してアクセスできるようにする必要があり、その方法も説明します。

 本連載では、主に以下の項目について扱います。

  • ASP.NETによる認証(クライアントの識別)
  • ASP.NETによる承認(リソースへのアクセス制御)
  • XML Webサービスとクライアントとの間でのSSLを利用した暗号化
  • ファイアウォール経由でのアクセス

1-1 ASP.NETを含むセキュリティ構成

 まずは、具体的なセキュリティ制御の話を始める前に、XML WebサービスやASP.NETに影響を与えるセキュリティを整理してみましょう。次の図1は、XML Webサービスにアクセスする際に影響があるセキュリティ項目をまとめた図です。

図1 XML Webサービス(ASP.NET)に影響するセキュリティ

 まず、1つ注意する点は、XML Webサービスの実行環境に当たるASP.NETが、IISにアドオンされている点です。図中の右部分のように、ユーザーが認証を受ける、つまりログオンする個所は、IISとASP.NETの両方にあります。ASP.NETで認証を受けるためには、まずIISで認証を受けて、IISを通過する必要があります。XML Webサービスを使う際に認証の仕組みを利用するには、これを踏まえて構成する必要があります。具体的な構成は1-2「ASP.NETでの認証設定」で扱います(なお、既定では「匿名アクセス」が有効になっています)。

 また、ASP.NETの1つであるXML Webサービスは、.NET Frameworkの共通言語ランタイム上で動作するプログラムであるため、.NET Frameworkが提供するセキュリティが利用できます。.NET Frameworkの主なセキュリティとして、「コードアクセス・セキュリティ」と「ロールベース・セキュリティ」があります。

 「コードアクセス・セキュリティ」は、プログラムをサーバからダウンロードして使う際に、どこからダウンロードしたか、また、そのプログラムを誰が作成したかによって、プログラムの動作に制限を加えるセキュリティです。ブラウザにActiveXコントロールやJavaアプレットをダウンロードして実行を制御するセキュリティに似ています。しかし、XML Webサービスは、プログラム自身をクライアントにダウンロードするわけではなく、サーバ内でローカルに実行されるので、コードアクセス・セキュリティを使う機会はあまりないかもしれません。詳しい設定は、本稿では割愛します。

 「ロールベース・セキュリティ」は、そのプログラムを実行しているユーザーごとにビジネス・ロジックを変更する場合に利用されます。このセキュリティでは、ユーザーを「ロール」と呼ばれるグループに分類して制御します。例えば、課長ロールは100万円までの決裁、部長ロールは500万円までの決裁というように、ユーザーによってロジックを変更するような場合に使います。先に触れたコードアクセス・セキュリティが、プログラム自身を制御するセキュリティであるのに対して、ロールベース・セキュリティは、利用者に対して制御するセキュリティです。このセキュリティは、ASP.NET固有の機能ではないので詳細は省略します。

 XML Webサービスとクライアントとの間でデータを暗号化するには、IISが提供するSSLを利用します。SSLはIIS上での設定なので、ASP.NETには特別な設定はありません。SSLを使うかどうかに関係なく、XML Webサービスのソース・コードは同じです。本連載の第3回「SSLを利用した暗号化」では、SSLの理解を深めるために、SSLを構成する手順のうち、比較的簡単にできる手順を説明し、XML WebサービスにSSLを使って接続してみます。

 また、図1にあるようにインターネットを利用してクライアントがサービスにアクセスする場合、一般にファイアウォールが存在し、社内ネットと社外ネットとの間で、利用できるプロトコルやポート番号に制限が加えられています。クライアントからXML Webサービスにアクセスするには、ファイアウォールを通過できるように構成する必要があります。これについては、第4回「ファイアウォールへの適用」で扱います。

 このように、ASP.NET以外のセキュリティからも影響を受けます。ASP.NETが固有に提供するセキュリティは、「認証」と「承認」です。この後は「認証」について説明し、第2回「承認と偽装によるアクセス制御」では、「承認」について説明します。

■POINT 認証(Authentication)と承認(Authorization)

 「認証」と「承認」は、それぞれ、AuthenticationとAuthorizationの日本語訳です(ドキュメントによって多少違う日本語訳になっているかもしれません)。この2つは、明確に区別されている概念なので注意してください。

 認証(Authentication)とは、ユーザーが入力したユーザー名とパスワードなどから、有効なユーザーであるかを確認し、誰であるか特定することです。いわゆる「ログオン」に当たります。

 一方、承認(Authorization)は、ログオンが済んで誰であるか特定されたユーザーに対して、特定のリソースにアクセスを許可したり、アクセスを禁止したりするなどの制御をいいます。いわゆる「アクセス制御」に当たるといえます。

 手続きの順番としては、まず認証(Authentication)があり、次に承認(Authorization)があることになります。ASP.NETには、固有の「認証」と「承認」の仕組みが用意されています。

 

 INDEX
  連載 XML Webサービスのセキュリティ実装
  第1回 認証によるクライアントの識別
  1-1 ASP.NETを含むセキュリティ構成
    1-2 ASP.NETでの認証設定
    1-3 クライアントからのログオン
 
インデックス・ページヘ  「連載 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 記事ランキング

本日 月間