目次へ

11.2. FORM認証

FORM認証はその他の認証方式と異なり、HTTPプロトコルのレベルで認証を行いません。HTMLのフォームとセッションを用いて認証を行います。

FORM認証において、アクセス制限されたWebリソースにアクセスすると、ユーザ名とパスワードを入力するフォーム(HTMLページ)を表示します。ユーザが正しいユーザ名とパスワードを入力すると、セッションにアクセス許可の情報を登録し、最初に指定したWebリソースを表示します。もし正しい情報が入力されなかった場合には、エラーページを表示します。セッションによって認証情報を管理するため、FORM認証の有効期限はセッションの有効期限に従います。BASIC認証やDIGEST認証の有効期限はブラウザを閉じるまでですから、多少、不都合な場合があるかもしれません。ただ入力ページおよびエラーページを共にHTMLで用意できるため、他のものに比べてデザインに優れた認証方式ということができます。

さてFORM認証を利用するためには、まずユーザ名とパスワードを入力するためのページと、エラー用のページを用意します。入力ページでは、ユーザ名とパスワードを入力するフォームに制約があります。

<form action="j_security_check" method="post">
  <input type="text" name="j_username">
  <input type="password" name="j_password">
  <input type="submit" value="ログイン">
</form>

以上のように、<form>のaction属性には「j_security_check」、ユーザ名を入力するフィールドの名前は「j_username」、パスワードを入力するフィールドの名前は「j_password」にしなければなりません。これ以外は自由にして構いません。ページをHTMLにしても、JSPにしても、どちらでも構いません。

エラーページには制約がありません。もしエラーページにもユーザ名とパスワードを入力するフォームを表示するなら、入力ページの場合と同じようにします。

入力ページとエラーページの準備ができたら、後はweb.xmlの設定だけです。

<login-config>
  <auth-method>FORM</auth-method>
  <form-login-config>
    <form-login-page>/input.html</form-login-page>
    <form-error-page>/error.html</form-error-page>
  </form-login-config>
</login-config>

FORM認証を用いる場合には、<auth-method>にFORMと指定します。また<login-config>の中に<form-login-config>を追加し、入力ページとエラーページの情報を指定します。<form-login-page>には入力ページ、<form-error-page>にはエラーページへのパスを、Webアプリケーションルートからのパスで指定します。

1つ注意点ですが、入力ページ・エラーページの表示には、HTTPリダイレクトが用いられます。つまり指定のWebリソースにアクセスしようとした際、入力ページにリダイレクトによって遷移するわけです。したがって入力ページ・エラーページは、Webクライアントによって直接アクセスできるところにある必要があります。

以上でFORM認証の設定は終了です。制限されたWebリソースにアクセスしようとすると、入力ページが自動的に表示されます。

(実習課題2)

実習課題1のWebアプリケーションを、FORM認証を使用するように改良しなさい。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp