efwフレームワーク ログイン・権限制御サンプル

概要

これはefwフレームワークに基づいたWebアプリケーションのサンプルで、包括的なログイン制御と権限管理機能を実装しています。社内システムとインターネット向けWebアプリケーションの両方に対応し、多層防御セキュリティアーキテクチャにより、直接URLアクセスや開発者ツールからの悪意のある呼び出しを効果的に防止します。

主な機能

ログイン制御

権限制御

セキュリティアーキテクチャ:多層防御

フロントエンドセキュリティ保護

<efw:client>タグメカニズムによる直接コンポーネント呼び出しの防止:

保護原理:

セキュリティ効果:

直接アクセス: http://app.com/MST01_inputdialog.jsp 
→ ページは読み込まれるが、すべての機能が無効化

適切なアクセス: メインページのダイアログ経由 → 完全な機能が動作

バックエンドセキュリティ検証

最終防御ラインとしてのサーバーサイドセッションと権限チェック:

セッション検証:

権限チェック:

保護効果:

// 開発者ツールでの偽造リクエスト試行
fetch('/app/event', {
    method: 'POST', 
    body: 'eventId=MST01_delete&userId=123'
});
 バックエンドでユーザー権限を検証  権限不足  エラーページを返す

プロジェクト構造

skeletonSample/
├── JSPページ/
│   ├── LG01.jsp          # ログインページ
│   ├── LG02.jsp          # メニューページ
│   ├── LG03.jsp          # パスワード回復ページ
│   ├── LG04.jsp          # パスワード変更ページ
│   ├── MST01.jsp         # ユーザー管理メインページ
│   ├── error.jsp         # エラーページ
│   └── コンポーネントファイル...
├── JavaScriptイベントファイル/
│   ├── LG01_*.js         # ログイン関連イベント
│   ├── LG02_*.js         # メニュー関連イベント
│   ├── MST01_*.js        # ユーザー管理イベント
│   └── グローバルイベント...
├── 設定ファイル/
│   └── efw.properties    # フレームワーク設定
└── データベースファイル/
    ├── skeletonSample.backup    # PostgreSQLバックアップ
    └── ユーザマスタDDL.sql      # ユーザーテーブル作成スクリプト

コア設定

ログイン制御 (efw.properties)

# ログイン制御を有効化
efw.login.check = true
efw.login.key = USER_ID
efw.login.url = LG01.jsp

# ログイン不要ページパターン
efw.outoflogin.url.pattern = LG01|LG03|LG04.jsp
efw.outoflogin.eventid.pattern = LG01|LG03|LG04|head_logout

権限制御 (efw.properties)

# 権限制御を有効化
efw.auth.check = true
efw.auth.key = USER_ID
efw.system.error.url = error.jsp

# ロール定義
efw.auth.cases = admin,user

# 管理者権限
admin.auth.pattern = ^admin.*$
admin.url.pattern = LG02|MST01.jsp
admin.eventid.pattern = LG02|MST01

# 一般ユーザー権限
user.auth.pattern = ^((?!admin).)*$
user.url.pattern = LG02.jsp
user.eventid.pattern = LG02

セキュリティ機能の詳細説明

1. フロントエンドコンポーネント保護

2. バックエンドセッション検証

3. 権限検証フロー

ユーザーリクエスト → フロントエンドコンポーネント検証 → バックエンドセッション検証 → バックエンド権限検証 → ビジネス実行

4. エラー処理戦略

データベース設計

ユーザーマスターテーブル構造:

CREATE TABLE "ユーザマスタ" (
    "ユーザID" VARCHAR(10) NOT NULL PRIMARY KEY,    -- ユーザーID
    "パスワード" VARCHAR(10),                      -- パスワード
    "ユーザ名" VARCHAR(20),                        -- ユーザー名
    "メール" VARCHAR(50),                         -- メールアドレス
    "コメント" VARCHAR(200),                       -- コメント
    "初期化フラグ" INTEGER,                        -- 初期化フラグ
    "ロックフラグ" INTEGER,                        -- ロックフラグ
    "パスワード更新日" DATE,                       -- パスワード更新日
    "作成日時" DATE,                              -- 作成日時
    "作成者" VARCHAR(10),                         -- 作成者
    "更新日時" DATE,                              -- 更新日時
    "更新者" VARCHAR(10)                          -- 更新者
);

システム要件

クイックスタート

  1. データベースのバックアップを復元するか、提供されたSQLスクリプトを実行
  2. データベース接続パラメータを設定
  3. Webサーバーにデプロイ
  4. ログインページにアクセスして使用開始

セキュリティベストプラクティス

  1. セッション管理: 適切なセッションタイムアウト期間の設定
  2. パスワードポリシー: 強力なパスワード要件と定期的な変更の実装
  3. エラー処理: 情報漏洩防止のための統一エラーページ
  4. ロギング: 重要なセキュリティイベントの記録
  5. 定期的な監査: 権限設定とユーザーロールの定期的な見直し

このサンプルは、efwフレームワークを使用したエンタープライズレベルのWebアプリケーション向けの完全なセキュリティソリューションを実演しています。フロントエンド保護 + バックエンド検証の多層防御アーキテクチャにより、Webアプリケーションにエンタープライズグレードのセキュリティ保証を提供します。