TERASOLUNAのセキュリティ機能でWebアプリを強化オープンソースTERASOLUNAで作るWebアプリ(5)(3/3 ページ)

» 2009年03月10日 00時00分 公開
[佐々木高洋株式会社NTTデータ]
前のページへ 1|2|3       

ユーザー一覧画面へのアクセスを制限する

 アクセス権限チェックのクラス実装例を以下に示します。

リスト12 SampleAuthorizationController.java
package sample2;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import jp.terasoluna.fw.web.RequestUtil;
import jp.terasoluna.fw.web.UserValueObject;
import jp.terasoluna.fw.web.thin.AuthorizationController;

public class SampleAuthorizationController
implements AuthorizationController {

    public boolean isCheckRequired(ServletRequest req) {
        // リクエストパスが/listで始まるならチェックする
        return RequestUtil.getPathInfo(req).startsWith("/list");
    }

    public boolean isAuthorized(String pathInfo, ServletRequest req)
    {
        // セッションを取得
        HttpSession session =((HttpServletRequest)req).getSession();

        // セッションからUVOを取得
        SampleUVO uvo = (SampleUVO) session.
            getAttribute(UserValueObject.USER_VALUE_OBJECT_KEY);
        if (uvo == null) {
            // セッションにUVOがなければ不許可
            return false;
        }
        // IDが10未満であれば許可
        return Integer.valueOf(uvo.getUserId()) < 10;
    }
}

 applicationContext.xmlに、アクセス権限チェックの実装クラスを定義します。

リスト13 applicationContext.xml
  <!-- アクセス権限チェック設定 -->
  <bean id="authorizationController"
    class="sample2.SampleAuthorizationController" />

 web.xmlには、アクセス権限チェックのフィルタ設定と、アクセスが拒否されて例外UnauthorizedExceptionがスローされた場合の遷移先定義を追記します。

リスト14 web.xml
  <!-- アクセス権限チェック -->
  <filter>
    <filter-name>authorizationControlFilter</filter-name>
    <filter-class>
      jp.terasoluna.fw.web.thin.AuthorizationControlFilter
    </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>authorizationControlFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

…(中略)…

  <error-page>
    <exception-type>
      jp.terasoluna.fw.web.thin.UnauthorizedException
    </exception-type>
    <location>/authorizationError.jsp</location>
  </error-page>

 遷移先エラーページを作成します。

リスト15 authorizationError.jsp
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ taglib uri="/struts-html" prefix="html"%>
<%@ taglib uri="/terasoluna-struts" prefix="ts"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
  <title>アクセス権限エラー</title>
</head>
<body>
  このページの閲覧権限がありません
</body>
</html:html>

 確認してみましょう。ユーザーIDが10以上のユーザーがユーザー一覧画面へアクセスしようとすると、エラーページへ遷移するようになります。

図6 アクセス権限エラーページ 図6 アクセス権限エラーページ

ボタンを非表示にする

 ログオン成功画面にある「ユーザ一覧」ボタンを、ユーザー一覧画面へのアクセス権を持たないユーザーには見せないようにします。

 ログオン成功画面(certified.jsp)の「ユーザー一覧ボタン」を、以下のように<t:ifAuthorized>タグで囲います。

  <t:ifAuthorized path="/listBL">
    <ts:submit>ユーザー一覧</ts:submit>
  </t:ifAuthorized>

 このタグで囲まれた部分は、pathで指定された「/listBL」パスへのアクセス権限を持つユーザーにのみ表示されるようになります。

アクセス権限チェックの確認

 ユーザーIDが10以上のユーザーは、ログオン成功画面に「ユーザー一覧」ボタンが表示されなくなります。

図7 ログオン成功画面(「ユーザー一覧」ボタンなし) 図7 ログオン成功画面(「ユーザー一覧」ボタンなし)

さまざまなプロジェクトを経た実用性の高いフレームワーク

 連載5回にわたってTERASOLUNAフレームワークを利用したWebアプリケーションを作成してきましたが、いかがでしたでしょうか。

 TERASOLUNAフレームワークは、NTTデータ内の大小さまざまなプロジェクトで使用され、そこからフィードバックを受けて改善され続けてきました。採用されている機能の多くは、実際の商用プロジェクトで開発され、使用されたものを取り込んだ実用性の高い機能です。

 日本語ドキュメントやサンプルも豊富にありSourceForge.JP上で公開されているため、ぜひ使ってみてはいかがでしょうか。

@IT関連記事

Webアプリの常識をJSPとStrutsで身につける
JSP/サーブレット+StrutsのWebアプリケーション開発を通じて、Java言語以外の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です。初心者・中堅・ベテランも大歓迎!

Strutsを使うWebアプリケーション構築術
ステップ・バイ・ステップの解説で誰にも分かるStruts講座。効率の高いWebアプリケーション開発をマスターしよう

開発の標準化とフレームワークの普及
21世紀はじめのWeb技術史(2) 今回は、ソフトウェア品質を高めるために進化を遂げてきたアプリケーション開発環境の最近の道筋を概観する。キーワードはフレームワーク
情報マネジメント > アーキテクチャ 2007/3/19

Javaバッチ処理は本当に業務で“使える”の?
オープンソースフレームワークを使ってバッチ処理の開発手法やノウハウを学んでいく本連載。バッチ処理を知っている人も知らない人も、業務システムに欠かせないバッチ処理について理解を深めましょう

.NET開発でもオープンソース・フレームワークを使おう
TERASOLUNA for .NETフレームワーク概説 .NET Frameworkだけの業務システム開発で起こる問題とは? それを解消するのに役立つフレームワークの条件とは?
Insider.NET」フォーラム 2003/9/30

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。