Cosminexus V9 アプリケーションサーバ 機能解説 セキュリティ管理機能編

[目次][用語][索引][前へ][次へ]

5.11.1 ログインの実装(タグライブラリを使用する場合)

統合ユーザ管理フレームワークを使用したユーザ認証を行う場合,ログイン時にサーブレットやJSPなどでログインモジュールを呼び出す処理を実装します。ログインモジュールを使用するには,JAASのコンフィグレーションファイルの設定が必要です。JAASのコンフィグレーションファイルの設定については,「14.2 jaas.conf(JAASのコンフィグレーションファイル)」を参照してください。

JSPの<ua:login/>タグを使用してログインするには,HTTPリクエストオブジェクトに,com.cosminexus.admin.auth.nameパラメタ,およびcom.cosminexus.admin.auth.passwordパラメタが設定されている必要があります。したがって,まず,次に示すようなログイン用のフォームを準備して,パラメタを設定できるようにします。

<html>
<body>
<form action="auth.jsp" method="post">
<table>
<tr>
<td>username</td>
<td><input type="text" name="com.cosminexus.admin.auth.name" /></td>
</tr>
<tr>
<td>password</td>
<td><input type="password" name="com.cosminexus.admin.auth.password" />
</td>
</tr>
</table>
<br />
<input type="submit" value="Login" />
<input type="reset" value="Reset" />
</form>
</body>
</html>

次に,<ua:login/>タグを使用して,JAASコンフィグレーションファイルのPortalエントリに記述された認証モジュールを使用してログインします。

<%@ taglib uri="http://cosminexus.com/admin/auth/uatags" prefix="ua" %>
<%@ page errorPage="error.jsp" %>
 
<ua:login id="lc" entry="Portal" />
...

タグライブラリの仕様によって,タグの処理中に発生した例外は,すべてJspExceptionとなります。<ua:login/>タグの処理中に発生した例外をより細かく検出する場合は,<ua:exception>Body </ua:exception>タグを使用します。次の例では,発生した例外を,検出するJSP(loginError.jsp)に転送しています。

<%@ taglib uri="http://cosminexus.com/admin/auth/uatags" prefix="ua" %>
<ua:login id="lc" entry="Portal" excepId="ex" excepScope="session" />
<ua:exception name="ex" ><jsp:forward page="loginError.jsp" /></ua:exception>
...

例外を検出するJSP(loginError.jsp)では,例外の内容に応じて返すメッセージを選択しています。

<%@ page contentType=”text/html; charset=Shift_JIS” %>
<%@ taglib uri=”http://cosminexus.com/admin/auth/uatags” prefix=”ua” %>
 
<html>
<body>
<ua:exception name="ex" type="javax.security.auth.login.FailedLoginException">
ユーザIDかパスワードが間違っています。<br />
</ua:exception>
<ua:exception name="ex" type="javax.security.auth.login.AccountExpiredException">
アカウントの有効期限が切れています。<br />
</ua:exception>
<ua:exception name="ex" type="javax.security.auth.login.CredentialExpiredException">
パスワードの有効期限が切れています。<br />
</ua:exception>
<ua:exception name="ex" >
例外が発生しました。<br />
<%= e.toString() %><br />
</ua:exception>
</body>
</html>
ポイント
ログインしているかどうかを確認する方法
各JSPページの先頭に<ua:notLogin>Body</ua:notLogin>タグを記述することで,そのJSPページを処理する前にログインしているかどうかを確認できます。
<%@ page contentType=”text/html; charset=Shift_JIS” %>
<%@ taglib uri=”http://cosminexus.com/admin/auth/uatags” prefix=”ua” %>
...
<ua:notLogin>
<a href=”login.html”>ログインしてください。</a>
</ua:notLogin>
...