Rainbow Engine

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

Tomcat

Tomcatのフォーム認証(DataSourceRealm)で403エラー等が発生した場合の対処

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

<目次>

(1) Tomcatのフォーム認証(DataSourceRealm)で403エラー等が発生した場合の対処
 (1-1) エラー①:HTTP 403 Forbidden
  (1-1-1) 発生状況・エラーメッセージ
  (1-1-2) 原因
  (1-1-3) 対策
 (1-2) エラー②:ログインエラー画面が表示される(エラーメッセージなし)
  (1-2-1) 発生状況・エラーメッセージ
  (1-2-2) 原因
  (1-2-3) 対策

(1) Tomcatのフォーム認証(DataSourceRealm)で403エラー等が発生した場合の対処

Tomcatのフォーム認証(DataSourceRealm)で403エラーなど認証が正常に機能しない場合の原因や対策を備忘として残します。

(1-1) エラー①:HTTP 403 Forbidden

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

フォーム認証の設定をデータソース利用方式(DataSourceRealm)で設定したところ、以下のような状況になりました。

・ログイン画面(Login.jsp)は正常に表示される
・誤ったIDとパスワードを入れるとログインエラー画面(LoginError.jsp)がちゃんと表示される
・しかし正しいIDとパスワードを入れると403エラーが表示される
 
(エラーメッセージ)※Google Chromeの例
HTTPステータス 403 - Forbidden
 
(図111)
 

目次にもどる

(1-1-2) 原因

原因は403の意味通り、権限の設定が誤っていました。

私の場合、「admin-gui」や「manager-gui」のハイフン「-」を間違ってアンダースコア「_」でDBに登録してしまっていたため、認証が出来ていませんでした。
 
(図112)

目次にもどる

(1-1-3) 対策

Tomcatのcontext.xml内のDataSourceRealmの設定で指定しているroleNameColカラムの権限を修正しました。

具体的には原因にも記載の通り、アンダースコア⇒ハイフンに修正する事で正常に認証されるようになりました。
 
(図113)
 

目次にもどる

(1-2) エラー②:ログインエラー画面が表示される(エラーメッセージなし)

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

こちらは正しいID/パスワードを入力しているはずが、ログインエラー画面に遷移してしまい、認証が通らない事象です。

ネットワークトラフィックを確認すると、正常に認証出来た時はHTTPステータスコードが303(See Other)になっていた所を普通に200(OK)になっています。なので、ネットワーク的にはリクエストが正常して、IDかパスワードが誤っていたためにログインエラー画面を返しただけで、特に異常なしでした。

(図121)

目次にもどる

(1-2-2) 原因

私の場合は、結論としては単純にユーザIDが間違っていました。ただし、厄介だったのがDBにユーザIDを登録する際に「意図せず末尾に半角スペースが混じっていた」事に気付かず、正しいIDだと思い込んで入力し続けていたため、中々気付く事ができませんでした。

半角スペースが混入した原因は、DBのテーブル定義でユーザIDを格納するカラムをCHAR(10)に設定していたためでした。

固定で10バイトを確保するため、10バイトに満たないID(例:user01)の場合は10バイトになるように余りを半角スペースで埋めていたのです。

(図122)

目次にもどる

(1-2-3) 対策

上記解決のため、テーブル定義でユーザIDのカラムをCHAR(10)⇒VARCHAR(10)に変更する事で、意図したユーザIDでログインできるようになりました。

(図123)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Tomcat

執筆者:


comment

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

関連記事

Tomcatでhttps接続を行う方法(自己証明書を使ってSSL化する方法)

<目次> (1) Tomcatでhttps接続を行う方法(自己証明書を使ってSSL化する方法)  (1-1) STEP1:鍵や証明書の作成  (1-2) STEP2:証明書の配備(任意)  (1-3) …

Eclipseで”Unknown version of Tomcat was specified”エラーが出た時の対処方法

<目次> (1) Eclipseで”Unknown version of Tomcat was specified”エラーが出た時の対処方法  (1-1) 事象  (1-2) …

Tomcatを使ったフォーム認証でユーザ情報をデータベース管理する方法

<目次> (1) Tomcatを使ったフォーム認証でユーザ情報をデータベース管理する方法  (1-1) 前提条件  (1-2) STEP1:context.xmlにコネクションプールを設定  (1-3 …

TomcatのURLに付くポート番号8080を非表示にしてドメイン名のみでサイトにアクセスする方法と手順

本記事で実現したい事は下記2点、①URLのポート番号・アプリ名を非表示(リバプロ)と②JSP/Servlet名非表示(web.xml)です。これらを実現する事でブラウザにドメイン名のみ(例:XXXX. …

Linuxでアプリケーションサーバを構築する手順の例

<目次> (1) Linuxでアプリケーションサーバを構築する手順の例  (1-1) APサーバの全体像  (1-2) APサーバの構築手順  (1-3) 各手順のURL (1) Linuxでアプリケ …

  • English (United States)
  • 日本語
Top