TomcatでFORM認証する。
前回のBASIC認証を行ったが、そのままFORM認証に切り替える。server.xmlの設定はそのままで、UserDatabasedRealmを使う。
FORM認証
FOMR認証は、Webアプリケーションが保護されているリソースを要求した際に、ユーザーに対してWebページのログインフォームを表示する。FORM認証を指定するには、auth-methodをFORMにセットする。セキュリティ
セキュリティに関しては、POSTメソッドを使用するため、BASIC認証よりは強くなるが十分とは言えない。セキュリティに重きを置くのであればDIGEST認証が手軽でいいだろう。BASIC認証のweb.xmlのディレクトリ構造
TomcatHome
+--auth
+--(login.html)
+--(err.html)
+-- WEB-INF
| +-- (web.xml)
+-- hogedb
+-- (hogedb.jsp)ログイン画面の作成
まずログイン画面を作成する。FORMタグのPOSTメソッドを利用して、ユーザー名とパスワードを送信させる。typt要素はtext、name要素はそれぞれ「j_username」「j_password」「j_security_check」と決められているので、それを指定する。<html> <head> <title>login</title> </head> <body> <center> <h1>LOGIN</h1> <p>Please enter your ID and password</p> <form method="POST" action="j_security_check" name="loginform"> <table> <tr> <td>user ID</td> <td><input type="text" name="j_username" size="32"></td> </tr> <tr> <td>password</td> <td><input type="password" name="j_password" size="32"></td> </tr> <tr> <td><input type="submit" value="login"></td> <td><input type="reset" value="reset"></td> </tr> </table> </form> <center> </body> </html>
エラーページの作成
<html> <head> <title>Login Failed</title> </head> <body> <h1>Login Failed</h1> </body> </html>
web.xmlの編集
web.xmlは <login-config>
<auth-method>FORM</auth-method>
<realm-name>hogeWebApp</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>動作確認
以上の設定が正しければ、以下のようなログイン画面が表示されるはずだ。BASIC認証で設定したtomcat-users.xmlに記述したユーザ名とパスワードを入力すれば、目的のページが表示されるはずだ。
