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>