前提・実現したいこと
サーブレット・JSPのFORM認証を用いてログイン画面を作成しようとしています。ログイン画面は正常に表示されるものの、正しいユーザIDとパスワードを入力しても404エラーになる状況です。
(本来は認証成功後にディレクトリの一覧が表示される想定です)
発生している問題・エラーメッセージ
■各設定の概要
今回はFORM認証を構築するに際して、以下の4つの設定を行いました。
①web.xml
→「WEB-INF」配下に配備
②tomcat-users.xml
→「$CATALINA_HOME/conf/」配下のファイルを設定しています。
③Login.jsp
→「WebContent」配下に配備しています
④LoginError.jsp
→「WebContent」配下に配備しています
■エラーメッセージ
エラー:HTTPステータス 404 NotFound
メッセージ:/LoginForms/j_security_check
説明:The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
該当のソースコード
①web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <security-constraint> <web-resource-collection> <web-resource-name>Form Auth</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin-gui</role-name> <role-name>manager-gui</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/Login.jsp</form-login-page> <form-error-page>/LoginError.jsp</form-error-page> </form-login-config> </login-config> <security-role> <role-name>admin-gui</role-name> </security-role> <security-role> <role-name>manager-gui</role-name> </security-role> </web-app>
②tomcat-users.xml
<role rolename="manager-gui"/> <role rolename="admin-gui"/> <user name="admin" password="admin" roles="manager-gui" /> <user name="PersonA" password="12345" roles="admin-gui, manager-gui" /> <user name="PersonB" password="12345" roles="admin-gui" /> <user name="PersonC" password="12345" roles="manager-gui" />
③Login.jsp
<%@ page contentType="text/html; charset=UTF-8" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Login Form</title> </head> <body> <form method="POST" action="j_security_check"> <table border="0"> <tr> <th align="right">User:</th> <td><input type="text" name="j_username" size="15" /></td> </tr> <tr> <th align="right">Password:</th> <td><input type="password" name="j_password" size="15" /></td> </tr> <tr> <td rowspan="2"> <input type="submit" value="Login" /> <input type="reset" value="Discard" /> </td> </tr> </table> </form> </body> </html>
④LoginError.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE html> <html> <head> <meta content="text/html;"> <title>Login Error Form</title> </head> <body> Error occured. Please go back to the previous screen. [<a href="JavaScript:history.back();">** Back **</a>] </body> </html>
試したこと
①構文チェック
最低限、自己チェックを行いスペルミス等の修正を行っています。
(例)
auth-constrait → auth-constraint
"admin-gui", "manager-gui" → "admin-gui, manager-gui"
②URL周りの設定の調整
404エラーの意味は理解しており、以下のようなURLに関連しそうな設定を調整しつつトライ&エラーしていたのですが、解消しなかったため質問の投稿をしました。
補足情報(FW/ツールのバージョンなど)
CentOS release 6.9 (Final)
Tomcat 8.5.42
回答2件
あなたの回答
tips
プレビュー