この特集のトップページへ
Chapter 8:プレゼンテーション層の構築

8.3.3 クライアント証明書を使った認証
●クライアント証明書とアカウントのマッピング
 クライアント証明書は,クライアントを証明するためのデータであり,デフォルトではアクセス権とはまったく関係ない。つまり,クライアント証明書を使う場合であっても,匿名アクセスと同じく,IUSR_サーバー名というアカウントの権限でASPファイルが実行される。したがって,クライアント証明書の内容を調べてどのような処理をするのかは,ASPファイルに記された処理に任されている。


One Point! もちろん,匿名アクセスではなく,ほかの認証方法を選択していた場合には,その認証方法で合致したユーザーアカウントの権限で実行される。しかし,クライアント証明書と他の認証方法を組み合わせることはめったにない。強いていえば,ある認証方法を使ってユーザーが正しいかどうかを判定したのち,さらにクライアント証明書を使ってユーザー情報を調べるといった具合に,二重のユーザー判定をしたいときぐらいである。

 しかしIISでは,クライアント証明書を上記のように使うだけではなく,クライアント証明書とドメイン上のユーザーとをマッピングさせることもできる。そのためには,[セキュリティで保護された通信]ダイアログボックス(Fig.8-100)で,[クライアント証明書のマッピングを有効にする]にチェックを付ける。

 どのようにマッピングするのかは,その右にある[編集]ボタンを押すことで設定することができる。[編集]ボタンを押すと,Fig.8-102に示すように,アカウントをマッピングするためのダイアログボックスが表示される。

Fig.8-102 アカウントマッピング
fig8_102

 アカウントをマッピングするためのダイアログボックスには,[一対一]と[多対一]という2つのページがある。

 [一対一]ページでは,クライアント証明書1つに対して,Windowsドメインのアカウント1つを対応させる。それに対して[多対一]ページでは,クライアント証明書に記載された個々のフィールドの値が合致したものを,Windowsドメインのアカウントに対応させる。[多対一]の設定を使うと,たとえば,自分が管理する証明機関(証明書サービス)から発行したクライアント証明書を保持するユーザー全員を,特定の1つのアカウントにマッピングするといった設定を実現できる。

○一対一のマッピング
 クライアント証明書とWindowsドメインのアカウントとを[一対一]でマッピングさせるには,IISが動作するサーバーに対し,事前にクライアント証明書をファイルとして保存しておく必要がある。

 クライアント証明書をファイルに変換する方法はいくつかあるが,Certreqコマンドを使うのが最も簡単である。

 証明書サービスで発行した証明書(クライアント証明書だけでなくサーバー証明書も含む)は,[証明機関]管理ツールの[発行した証明書]に含まれる(Fig.8-103)。そのため,[発行した証明書]ツリーのなかから,取得したいクライアント証明書の要求IDを調べ,Certtreqコマンドを次のように実行すれば,クライアント証明書をファイルとして保存できる。

Certreq -retrieve 要求ID
Fig.8-103 発行した証明書
fig8_103

 [一対一]のマッピングを追加するには,[一対一]ページで[追加]ボタンを押す。すると,Fig.8-104に示すとおり,マッピングの対象となるクライアント証明書のファイル名が尋ねられる。ここでは,Certreqコマンドを実行したときに指定したクライアント証明書のファイル名を指定する。

Fig.8-104 クライアント証明書のファイルの選択
fig8_104

 クライアント証明書を選択すると,Fig.8-105のように,どのアカウントにマッピングするのかを尋ねられる。そこで,マッピングしたいアカウント名とパスワードを入力し,[OK]ボタンを押す。

Fig.8-105 アカウントへのマッピング
fig8_105

 以上の設定により,特定のクライアント証明書を保持したユーザーが接続してきたときに,特定のアカウントにマッピングして動作させることができるようになる。

○多対一のマッピング
 多対一でマッピングするには,[アカウントマッピング]ダイアログボックス(Fig.8-102)で[多対一]のページを開き,[追加]ボタンを押す(Fig.8-106)。すると,Fig.8-107に示すとおり,規則名を入力するように求められるので,適当な名称を入力して[次へ]ボタンを押す(名称は何でもかまわない)

Fig.8-106 [多対一]ページ
fig8_106

Fig.8-107 名称の入力
fig8_107

 すると,Fig.8-108に示すように,証明書のどのフィールドにどの文字列が含まれている場合にマッピングするのかを設定する画面が表示される。ここで[新規作成]ボタンを押すと,Fig.8-109に示すウィンドウが表示され,フィールド名と値とを設定することができる(フィールド名についてはTable 8-6を参照)。

Fig.8-108 規則の設定
fig8_108

Fig.8-109 規則要素の編集
fig8_109

 Fig.8-109の画面では,どのフィールドがどの条件に合致するときにマッピングするのかを設定する。たとえば,「[発行者]の[O]フィールドが[Foo Co.LTD]という値を保持するときにマッピングする」といった条件を設定することになる。

 規則は,必要なだけ設定することができる。複数の規則を設定するには,必要なだけFig.8-108の[新規作成]ボタンを押し,規則を指定すればよい。すべての規則を設定したら,[次へ]ボタンを押す。

 すると,Fig.8-110に示すようにマッピングするユーザーを尋ねられるので,マッピングしたいユーザー名とパスワードを入力する。なお,ここで[アクセスを拒否]を選ぶと,Fig.8-108で設定した条件と合致するユーザーのアクセスを拒否することもできる。

Fig.8-110 マッピング
fig8_110

 以上で,多対一のマッピング設定は完了である。

●次回予告
 前回,今回と引き続き,IISの設定方法,ASPによる基本的な入出力操作,IISのセキュリティ概要について,簡単に説明してきた。実際には,ASPによるプログラミングの方法だけを説明し,IISの設定方法やセキュリティ概要の説明は割愛してもよかったのだが,Webアプリケーションを構築するうえでセキュリティの設定は必要不可欠な要素であるため,あえてIISの設定方法も含めて説明した。

 説明が長く続いてしまったが,ASPを使ってWebアプリケーションを開発する場合に最も基本となる操作は,「Requestコレクションを使ってクライアントから入力された情報を取得し,Response.Writeメソッドを使ってクライアントに出力する」ということだけである。あとは,必要に応じてクッキーを使ったり,Sessionオブジェクトを使ったりして,Webページ間のデータを受け渡すようにすればよい。

 次回は,Chapter 7で構築したVisual Basicのプレゼンテーション層を,ASPを使ったWebアプリケーションとして移植し,Webからビジネスアプリケーションを利用できるようにしてみる。

Prev 43/43