 |
1. 導入するフォーム認証の動作を理解する
この機能を使うには、まず、既存のフォーム認証がどのような構成で動作しているのかを理解しなければなりません。
理解するポイントとしては「データを入力する画面はどこにあるのか」、「入力画面はどれか」「データは何で送信するのか」「データは何が必要か」「データはどこへ送信されるのか」「認証後はどうなるのか」になります。
次の図のようなフォーム認証の場合を考えてみましょう。なお、認証方法は「ユーザIDとパスワードを入力する」ものとします。
このフォーム認証の構成から、「データを入力する画面はどこにあるのか」にあたるフォーム認証画面のURLは「/docs/form.html」であることと、「データはどこへ送信されるのか」にあたるユーザIDおよびパスワードの送信先URLはフォーム認証画面と異なるURLで「/cgi-bin/login.cgi」であることがわかります。さらに、「認証後はどうなるのか」にあたる認証後の動作は「認証結果が表示される」になることがわかります。
2. 設定を行うための情報を収集する
次にフォーム認証用CGIが動作するために「データは何で送信するのか」「データは何が必要か」を理解します。この動作を理解するためには、フォーム認証を行う画面のHTMLソースを参照します。上の例のフォーム認証が以下のようなHTMLソースの場合を考えてみましょう。
■ フォーム認証画面のHTMLソース
<HTML>
<HEAD>
<TITLE>フォーム認証</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="/cgi-bin/login.cgi">
<INPUT TYPE="text" NAME="userid">
<INPUT TYPE="password" NAME="password">
<INPUT TYPE="submit" NAME="submit"
VALUE="ログイン">
</FORM>
</BODY>
</HTML>
|
ここで注目するのは「データは何で送信するのか」にあたる「動作メソッド」、「データは何が必要か」にあたる「送信するデータ」です。データの送信先についてもここで知ることができます。
- 動作メソッドは<FORM>タグのMETHOD属性で指定されているものになります。ここでは「POST」となります。
- 送信するデータは<FORM>タグと</FORM>タグの間に記述された<INPUT>タグが対象となります。ここで対象となるのは次の2つになります。
<INPUT TYPE="text" NAME="userid">
<INPUT TYPE="password" NAME="password">
なお、「<INPUT TYPE="submit" NAME="submit" VALUE="ログイン">」はログインするためのボタンを表示するための記述のため、対象にはなりません。
また、ここでは触れていませんでしたが、「データはどこへ送信されるのか」にあたる「データ送信先」は<FORM>タグのACTION属性で指定されているものになります。ここでは「/cgi-bin/login.cgi」となります。(これはフォーム認証の構造の時点で判明しています)
ここまでの「動作の理解」と「必要な情報の収集」でフォーム認証が以下のように動作することがわかります。
どこに |
フォーム認証画面 |
/docs/form.html |
どれか |
判断用キーワード |
|
何で |
動作メソッド |
POST |
どこへ |
データ送信先 |
/cgi-bin/login.cgi |
何が必要か |
送信データ |
userid
password |
どうなるか |
認証後の動作 |
認証結果の表示 |
「入力画面はどれか」の部分が空白になっていますが、ここではそのままで先に進みます。
3. 自動フォーム認証機能を設定する
ここでは、これまでに収集した情報を元にして自動フォーム認証機能ではどのように設定するかを説明していきます。
まず、HP IceWall SSOの自動フォーム認証機能における設定の概念を理解する必要があります。この機能では複数のフォーム認証に対応させたり、1つのフォーム認証設定を共有したりするためにフォーム設定をグルーピングする「フォームグループ」を使用しています。
先の例のフォーム認証を自動フォーム認証機能に設定すると、次のようになります。
■ フォーム認証設定ファイル(ここでは/opt/icewall-sso/dfw/cgi-bin/form.confとします)
〜
FORM_URL=FGROUP,/docs/form.html
FORM_KEY=FGROUP,<TITLE>フォーム認証</TITLE>
FORM_METHOD=FGROUP,POST
FORM_SEND=FGROUP,/cgi-bin/login.cgi
FORM_DATA_USR=FGROUP,POSTDATA,userid,UIDCLM
FORM_DATA_USR=FGROUP,POSTDATA,password,PWDCLM |
この例ではフォームグループ名を「FGROUP」としています。
- FORM_URLはフォーム認証画面が表示されるURLを指定しています。
- FORM_KEYはフォーム認証画面を識別するためのキーワードを指定しています。これは情報収集の段階で空白になっていた「どれか」に相当する部分になります。この例の場合は固定のURLからのみの表示のため不要に思われるかもしれませんが、HP IceWall SSOのようにセッションを管理しているアプリケーションの場合は、セッションが切れた時点でURLに関係なくフォーム認証画面が表示されてしまうので、認証画面かどうかをキーワードを用いて判断するために設定します。
- FORM_METHODはデータ送信方法を指定しています。
- FORM_SENTはデータの送信先URLを指定しています。
- FORM_DATA_USRは送信するデータの名称と、その取得先を指定します。この項目の場合、データの取得先は認証DBのカラムとなります。(指定したカラムが認証DB上に存在することと、フォーム認証に必要な情報が入っているものとします)
このような設定でフォーム認証に対してシングル・サイン・オンを行うと、フォーム認証画面が表示されずに、いきなりフォーム認証結果の画面が表示されるようになります。
|