Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

JSP/Servlet Tomcat

JSP/Servletでウェルカムページが認証されない事象について

投稿日:2021年4月24日 更新日:

<目次>

(1) JSP/Servletでウェルカムページが認証されない事象について
 (1-1) 発生状況・エラーメッセージ
 (1-2) 原因
 (1-3) 対処

(1) JSP/Servletでウェルカムページが認証されない事象について

JSP/Servletでウェルカムページに設定したページが、フルパスだと認証(ログイン画面に自動遷移)されるのに対して、ウェルカムページの短縮URL(jsp名を省略したURL)でアクセスすると認証されない、という事象についてです。

結論として、これは「仕様通り」の動きなのですが、なぜこうなるかについて少し整理したので備忘として残します。

(1-1) 発生状況・エラーメッセージ

●ウェルカムページを指定

web.xmlにて<welcome-file>要素を用いてウェルカムページの指定を行いました。具体的には下図のように「WebContent/form_auth/AfterLogin.jsp」というページを指定しています。
 
(図111)
 
これによりjsp名を省略したURLでアクセス可能にしています。
https://[ホスト名]:[ポート番号]/ [アプリケーション名]/

 

●Form認証の適用

ウェルカムページで指定したページが含まれる「form_auth」ディレクトリ配下に対して、Form認証を適用しました。
 
(図112)
 
これにより「AfterLogin1.jsp」にアクセスするためには認証(Login1.jspからのログイン)が必要になりました。
 
https://[ホスト名]:[ポート番号]/ [アプリケーション名]/form_auth/ AfterLogin1.jsp

●しかし・・

AfterLogin1.jspのフルパスを指定した場合はログイン画面に遷移するものの、ウェルカムページとして短縮URLでアクセスした際には、結果的には同じ画面を表示しようとしているにも関わらず、認証が発動しませんでした。
 
(動画)
操作①:AfterLogin1.jspにフルパスでアクセス⇒認証あり
操作②:AfterLogin1.jspにウェルカムページのURLでアクセス⇒認証されない

 

目次にもどる

(1-2) 原因

ウェルカムページの短縮URLだと、Form認証の適用パターン(/form_auth/*)にマッチせず、認証のカバー範囲から外れてしまうためです。具体的には、次のようにウェルカムページの短縮URLが、認証範囲よりも上位の階層の扱いになるため、短縮URLの時には認証がされませんでした。

(ウェルカムページの短縮URL)
https://ik1-336-28337.vs.sakura.ne.jp:8443/LoginTemplate/
(認証範囲)
https://ik1-336-28337.vs.sakura.ne.jp:8443/ LoginTemplate/form_auth/*

 

目次にもどる

(1-3) 対処

私自身はこの事象に対する明確な対処方法を見つけられていないのですが、運用回避としてウェルカムページは認証が不要な入口のページとして作り変える方針で進めようと考えています(※そもそも、ウェルカムページってそういうモノですし💦)。

そして、ウェルカムページから飛ぶ先から認証が必要な構造にしようと考えています(よくある、ウェルカムページに「ログイン」ボタンが設置してあるイメージ)。

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-JSP/Servlet, Tomcat

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

サーブレットとは?その役割やHelloWorldサンプルコードのご紹介

(0)目次&概説 (1) サーブレットの基本  (1-1) サーブレットとは?  (1-2) サーブレットの前身技術との比較  (1-3) サーブレットとJSPの違い  (1-4) サーブレットのHe …

Servlet/JSPで日本語文字が「???」になる問題とFilterの活用について

(0)目次&概説 (1) 事象 (2) 原因 (3) 対処方法1  (3-1) フィルタクラスの新規作成  (3-2) フィルタクラスへのコード追加  (3-3) 疎通確認テスト (4) 対処方法2 …

jQueryの$(document).ready()とは?意味や使い方をご紹介

<目次> (1) jQueryの$(document).ready()とは?意味や使い方をご紹介  (1-1) 「$(document).ready()」とは?  (1-2) サンプルプログラム  ( …

サーバサイドJava(JSP&サーブレット)のFORM認証を用いたログイン画面の開発

(0)目次&概説 (1) サーバー側JavaのFORM認証  (1-1) 認証の種類  (1-2) FORM認証の特徴  (1-3) FORM認証の実装概要 (2) FORM認証の実装手順  (2-1 …

JSPのコンパイル済ファイルの格納場所(Tomcat単体の場合、Eclipse連携の場合)

<目次> (1) JSPのコンパイル済ファイルの格納場所(Tomcat単体の場合、Eclipse連携の場合)  (1-1) Tomcatを単体で使用している場合  (1-2) Eclipseとアプリケ …

  • English (United States)
  • 日本語
Top