• 締切済み

web.xmlの記述

web.xmlに次の記述をしていると、normal権限のユーザでログインするとHTTP Status 403に飛んでしまいます。 ~ <security-constraint> <web-resource-collection> <web-resource-name>Certification Area for admin</web-resource-name> <url-pattern>/f.html</url-pattern> <url-pattern>/a.html</url-pattern> <url-pattern>/c.html</url-pattern> <url-pattern>/n.html</url-pattern> <url-pattern>/s.html</url-pattern> <url-pattern>/サーブレット</url-pattern> ~ </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Certification Area for normal</web-resource-name> <url-pattern>/f.html</url-pattern> <url-pattern>/s.html</url-pattern> <url-pattern>/サーブレット</url-pattern> ~ </web-resource-collection> <auth-constraint> <role-name>normal</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/auth.html</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> ~ 環境 WindowsXP Home Edition Tomcat4.1.36 MySQL4.0.26 mysql-connector-java-3.1.13-bin.jar 検索もしていますが、どれも解決に結びつきません。 原因、解決法が分かる方は、ご教示ください。

  • Java
  • 回答数5
  • ありがとう数3

みんなの回答

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.5

結果的に動いてメデタシ。 でも一抹の疑問が。 それは"normal"権限でFORMにログインされる場合 usernameとpasswordはどこで設定されますか? 何か立場が違ってしまいましたね。

myst_scientist
質問者

補足

>usernameとpasswordはどこで設定されますか? データベース(MySQL)で ユーザテーブルとユーザ権限テーブルを作りまして 前者にユーザのユーザID、パスワードなど諸々の情報を、 後者にユーザIDと権限(normalあるいはadmin)を設定しています。 後は %CATALINA_HOME%\conf\server.xmlをテキストやサイトを参考にしながら編集しました。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.4

現状に付け加えてみたら可能性ありかと。 <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="normal"/> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager"/> <role rolename="admin"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> <user username="admin" password="admin" roles="admin,manager"/> <user username="normal"password="normal"roles="normal"/> </tomcat-users> これでうまく行けばログインでusername normal password normalでいけるような気がします。

myst_scientist
質問者

お礼

度々の返信を感謝します。 そのように加えても、HTTP Status 403 となってしまいます。

myst_scientist
質問者

補足

元のweb.xmlを共通で使えるリソースを考え以下のように書き直したら成功しました。 <security-constraint> <web-resource-collection> <web-resource-name>Certification Area for All</web-resource-name> <url-pattern>/f.html</url-pattern> <url-pattern>/s.html</url-pattern> <url-pattern>/サーブレットの一つ</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> <role-name>normal</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Certification Area for Admin</web-resource-name> <url-pattern>/a.html</url-pattern> <url-pattern>/c.html</url-pattern> <url-pattern>/n.html</url-pattern> <url-pattern>/サーブレット</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> 「共通に使えるものはまとめて書くように」というルールでもあるんでしょうか?

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.3

全く自信はないですがでは Tomcatの%CATALINA_HOME%\conf\tomcat-users.xml の設定は現状どのようになっていますか。

myst_scientist
質問者

補足

以下のようになっています。 <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager"/> <role rolename="admin"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> <user username="admin" password="admin" roles="admin,manager"/> </tomcat-users> index.html(照準で表示するページ)内にf.htmlのリンクを張って、そこをクリックして、認証ページを介して(<url-pattern>/f.html</url-pattern>)f.htmlに飛ぶようにしていますがこれが問題でしょうか?

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

Tomcatで%CATALINA_HOME%\conf\tomcat-users.xml でロールが <tomcat-users> <role rolename="normal"/> </tomcat-users> ユーザが <user username="XXXXX" password="xxxxx" roles="normal"/> とかになりませんか?

myst_scientist
質問者

お礼

アドバイスをありがとうございます。 >とかになりませんか? 自然に加わるということでしょうか? それとも、そのように書けばうまくいくかもということでしょうか? 前者であればそうなっていません。 ただ、これはデータベースに登録されたユーザとそのパスワードと権限からアクセスの許可、拒否をするものなので少々違うような気がするのですが・・・。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

見つかりませんね。 HTTP/1.1 StatusCodeに Statusコードが4xxのとき ClientErrorで  「リクエストの構文が間違っているか理解されなかった」とあります。 また 403 Forbidden サーバはリクエストを理解したが        実行を拒否した。 と「秀和システム本」にありました。

myst_scientist
質問者

お礼

ありがとうございます。 (株)SCCの「Webアプリケーション構築1」を参考にやっているのですが、amazonによると、少々間違えがあるようです。 しかし、今まではWebサイトで解決できましたが、これはできません。 adminユーザはアクセスできるので、根本的に間違っているはずはないと思うのですが・・・

関連するQ&A

  • 認証に失敗する

    Webアプリケーション作成中に以下のような状態になってしまいました 認証ページでユーザIDとパスワードを入力(正確)→エラーページ 「Webアプリケーション構築1」(株式会社SCC)のP266~275を参考に以下のようにTomcat 4.1\conf\server.xmlを書き換えました。 198~203行目(<!-- -->は外して) 186~187行目はコメント化 <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="org.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/[使用データベース名]" connectionName="manager1" connectionPassword="manager1" userTable="user" userNameCol="userid" userCredCol="password" userRoleTable="user_role" roleNameCol="role" /> またWebアプリケーションのweb.xmlは次のようになっています ~省略(ここまでの表記では正常に動きます)~ <security-constraint> <web-resource-collection> <web-resource-name>Certification Area</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/auth.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> 開発環境 Tomcat4.1 J2SDK1.4 MySQL4.0.26 Javaのプログラミングは入っていないのですが、関連はあると考えたのでこちらで質問しました。 上記のテキストを見直しても間違っている箇所が見当たりません。 大変長くなってしまいましたが、どこが間違っているか、足りていないかなど分かる方がいましたら教えてください。

  • web.xml難しいです。。

    Tomcatを起動すると以下のエラーが出てて、 解決できません。 サービス Tomcat-Standalone を起動します Apache Tomcat/4.1.18 2003/03/10 22:12:47 org.apache.commons.digester.Digester error 致命的: Parse Error at line 29 column 11: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filt er*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-map ping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,sec urity-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref *)". ■Web.xmlの内容 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>KS</servlet-name> <servlet-class>jp.co.test1.KSevlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>KServlet</servlet-name> <url-pattern>/servlet/KServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>KDServlet</servlet-name> <servlet-class>jp.co.test1.KDServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>KDServlet</servlet-name> <url-pattern>/servlet/KDServlet</url-pattern> </servlet-mapping> </web-app>

    • ベストアンサー
    • Java
  • struts関連 web.xmlに複数の<servlet-mappin

    struts関連 web.xmlに複数の<servlet-mapping>を記述する方法について 初歩的なことなのかもしれませんが質問させてください。 Struts1.3.5での質問なのですが、web.xmlにURLパターンを複数記述している場合に servlet-mapping の記載位置が後の方のURLパターンが、 JSPのFormタグで生成されるパスに設定されてしまい、原因が分からず困っています。 現象としては、 例えば、web.xmlの<servlet-mapping>にそれぞれ異なる URLパターンを[/abc/*]→[/xyz/*]の順で記述している場合、 web.xml(抜粋)---------------------------------------------- <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/abc/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/xyz/*</url-pattern> </servlet-mapping> ---------------------------------------------------------- URLパターンが[/abc/*]となる以下のURLをブラウザで表示した所、 [https:/localhost/{コンテキストルート}/abc/LoginAction] 表示されたJSP内で指定しているformタグのアクションパスが web.xmlで記載したURLパターンのパスではなく、 web.xmlで後の方に記載した別のURLパターンのパス(/xyz/)が設定されてしまいます。 ・表示されるJSP内で指定しているアクションパス <html:form action="/LoginAction"> 上記で生成されるHTML <form name="LoginForm" method="post" action="/コンテキスト名/xyz/LoginAction">       web.xmlでURLパターンを[/xyz/*]→[/abc/*]の順で記述した場合は、 正しくURLパターンで記述したパスが設定されます。 <form name="LoginForm" method="post" action="/コンテキスト名/abc/LoginAction"> ただし、この場合はURLパターンが[/xyz/*]のURLを表示した場合に <form ~ action="/{コンテキストルート}/abc/LoginAction">となってしまいます。 どなたかこうした現象について回避策をご存知の方はいらっしゃらないでしょうか?

    • ベストアンサー
    • Java
  • javaサーブレットのweb.xmlについておしえてください

    サーブレット作成中です。初心者です。 まずやりたいことは a.jspを作成しa.jspではformタグのactionにSampleを指定しています。 そして/test/Best.classを実行し、 b.jspに値を表示させます。つぎにb.jspからSample2参照させ /test/Best2.classを実行させたいと思いますが、 以下のようにweb.xmlに書いているのですが うまくいきません。 何がいけないのでしょうか?他に何か設定等いるのでしょうか? また他に手段があるのでしょうか? おしえてください。 ※ちなみにSampleだけの場合はうまくいっています。 SampleとSample2というように二つ設定させると うまくいきません。 ------ web.xmlの中身の一部------- <servlet> <servlet-name>Sample</servlet-name> <servlet-class>test.Best</servlet-class> <servlet-name>Sample2</servlet-name> <servlet-class>test.Best2</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sample</servlet-name> <url-pattern>/Sample</url-pattern> <servlet-name>Sample2</servlet-name> <url-pattern>/Sample2</url-pattern> </servlet-mapping> --------------------------

    • ベストアンサー
    • Java
  • strutsに関連したxmlのサーブレットマッピング

    失礼致します。 初歩的なことですが質問させてください。 strutsにおけるxmlファイルの記述例は次のようになります。 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> ここで、新しいサーブレット(download)を追加しようと次のように記述を加えました。 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <servlet-name>download</servlet-name> <servlet-class>Download</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-patte <servlet-name>download</servlet-name> <url-pattern>/download</url-pattern>rn> </servlet-mapping> すると、入り口のファイルに対し、「The requested resource (/プロジェクト名/ファイル名.jsp) is not available.」と警告されました。 strutsではサーブレットの追加は出来ないのでしょうか?ご指摘お願いします。

    • ベストアンサー
    • Java
  • web.xmlの書き方

    web.xmlの書き方 質問させてください webcontent\day5\rsMeta.jspというファイルにブラウザからアクセスしたいのですが、エラーが出ます。 web.xmlの書き方が間違っているのですが、どのように書けばよいでしょうか? 現状のweb.xmlを以下に記載します。 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Jijyodoryoku</display-name> <servlet> <servlet-name>rsMeta</servlet-name> <jsp-file>/day5/rsMeta.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>rsMeta</servlet-name> <url-pattern>/rsMeta</url-pattern> </servlet-mapping> </web-app>

    • ベストアンサー
    • Java
  • web.xmlの書き方

    初めまして。最近Servletを始めた者です。 いきなりweb.xmlの書き方でつまづいてしまっています。 フォルダ構成は webapps\study\WEB-INF |____classes___test___Test.class | |____jsp(空) | |____web.xml になっています。 環境はWin2k j2sdk-1_4_1_04 jakarta-tomcat-4.1.27 です。 とりあえず自分の書いたweb.xmlは下記のとおりです。 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app>  <servlet>   <servlet-name>Test</servlet-name>   <servlet-class>test.Test</servlet-class>  </servlet> <servlet-mapping> <servlet-name>Test</servlet-name> <url-pattern>/servlet/Test</url-pattern> </servlet-mapping> </web-app> このまま http://localhost:8080/study/servlet/Test にアクセスしようとすると javax.servlet.ServletException: サーブレットインスタンスを割り当て中のエラーです java.lang.NoClassDefFoundError: test/Test (wrong name: Test) と出てしまいTest.classは表示されません。 ちなみにTest.classを一つ上のフォルダclassesの直下に入れてあげて <servlet-class>test.Test</servlet-class> を <servlet-class>Test</servlet-class> にしてあげるとちゃんと表示されます。 なのでそこの記述の仕方がわかっていないのだと思っていますがなかなかうまくいかないのです。 もしよろしければご教授願えるとありがたいです。 それでは失礼いたします。

    • ベストアンサー
    • Java
  • java Web.xml ファイルの設定について

    Eclipse 3.4を使用してwebアプリを作成しているのですが、 web.xmlの「filter-mapping」の設定を行った時に処理が「filter」 にて指定した場所へ遷移しません。web.xmlの設定が誤っているのではないかと思い色々調べたのですが、解決しませんでした。 どなたか解決方法等、分かる方がいらっしゃれば教えていただいても よろしいでしょうか。 以上ですが、よろしくお願いいたします。 <Web.xml> <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Rev1</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <filter> <description></description> <display-name>LoginFilter1</display-name> <filter-name>LoginFilter</filter-name> <filter-class>datachk.LoginFilter1</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/Search.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/Datachk</url-pattern> </filter-mapping> <servlet> <description></description> <display-name>LoginChk</display-name> <servlet-name>LoginChk</servlet-name> <servlet-class>datachk.LoginChk</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginChk</servlet-name> <url-pattern>/LoginChk</url-pattern> </servlet-mapping> <servlet> <description></description> <display-name>Search</display-name> <servlet-name>Search</servlet-name> <jsp-file>/Search.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>Search</servlet-name> <url-pattern>/Search.jsp</url-pattern> </servlet-mapping> <servlet> <description></description> <display-name>Datachk</display-name> <servlet-name>Datachk</servlet-name> <servlet-class>datachk.Datachk</servlet-class> </servlet> <servlet-mapping> <servlet-name>Datachk</servlet-name> <url-pattern>/Datachk</url-pattern> </servlet-mapping> </web-app>

    • ベストアンサー
    • Java
  • Tomcat5.0でのweb.xmlについて

    現在、以下の環境で開発しております。 ・Eclipce 3.2 + Tomcat5.0 + Struts ・OS:WindowsXP プロジェクトのweb.xmlを以下の様に書き換えるとJspを認識してくれなくなってしまいます。原因が全く掴めず難儀しております。 どうかご助言の程願います。 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Struts Blank Application</display-name> -----------------------このブロックを挿入すると404エラーになる <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Shift_JIS</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> --------------------------------------------------- <!-- Standard Action Servlet Configuration (with debugging) --> <servlet> ・ ・ 日本語の文字化け防止に入れたいのですが、現象の為、入れられず困っています。

  • eclipseのアンインストール

     こんにちは☆ eclipseについてお聞きしたいことがあります。 以前 eclipse3.2 tomcat_3.2.0 Java 2 Runtime Environment. SE v1.4.2_16 Java 2 SDK. SE v1.4.2_16 Java Platform. Enterprise Edition 5 SDK 等を用いてeclipseでの開発を行っていました。 ところが、webサーバの調子が悪く(?) localhost:8080の画面は見られるのですがその下の一部のプロジェクトの画面が見られなくなりました。 (たとえばStrutsというプロジェクトのpage1.jspを見る際は http://localhost:8080/Struts/page1.jsp に問い合わせてブラウザに出力していました。) そのため、上記の環境を全てアンインストールしました。 そして j2sdk-1_4_2_16 ならびに上記のものを入れ直したのですが、 やはり同じ現状です。 一部のプロジェクトは画面が映るにもかかわらず、映らないものもあります。 tomcatを起動するときに org.xml.sax.SAXParseException: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)". という警告(エラー)がでるのが気になります。 web-app(C:\Program Files\Apache Tomcat 4.0\webapps)にあるxmlファイルのタグは上記のような文字列じゃないと 駄目という事でしょうか。確かに合致しないタグはあります。 自分自身、良く分かっていないので何を聞けばいいか絞れてませんが、参考になるサイト等アドバイス頂ければありがたいです。 また、 eclipseのアンインストール方法は正しかったでしょうか? SDKを入れた時点で前に作成したプロジェクトがすでに表示されていたのですが・・・

    • ベストアンサー
    • Java

専門家に質問してみよう