#freeze
*TOMCATいろいろ --覚書状態 [#k4ec9085]
#contents

**はじめに [#d0ce7e6a]
Tomcatの設定やらなんやらの覚書です
~
**Tomcat4.0.4を使用していて突如 Security Manager が有効になる [#c8f5fb9c]
Tomcat4.0.4 を Eclipse2.1 Lomboz で使用していて突如 Security Manager が有効になりました。(2003/5/19)~
発生時の環境
 Windows2000sp3
 IE6.0(その他、ネスケ4.0・6.1・7? opera など)
 j2sdk1.4.1_02
 Tomcat4.0.4
 Eclipse2.1
 Lomboz
原因不明、情報求む~
~
----
-http://www.ingrid.org/jajakarta/tomcat/tomcat-4.0/webapps/tomcat-docs-ja/security-manager-howto.html -- [[Security Manager HOW-TO]] SIZE(10){2003-05-27 (火) 10:34:14}


// #comment

~


**Tomcat4.1.12以上で /servlet/* にアクセスできない [#s55b9178]
Tomcat4.1.12以上を使用する場合、/servlet/* を指定するとHTTP Status 404 が帰ってきます。~
これはデフォルトの設定では /servlet/* にアクセスがあった場合、サーブレットを実行するようになっていないためです。~
<解決方法>~
 [Tomcatのフォルダ]\conf\web.xmlを編集します。
 273行目付近の以下の赤字の2行のコメント行をはずします。
 (修正前)
 <!--
 <servlet-mapping>
   <servlet-name>invoker</servlet-name>
   <url-pattern>/servlet/*</url-pattern>
 </servlet-mapping>
 -->
 (修正後)
 <servlet-mapping>
   <servlet-name>invoker</servlet-name>
   <url-pattern>/servlet/*</url-pattern>
 </servlet-mapping>

この修正で /servlet/* にアクセスがあった場合にサーブレットが実行されるようになります。~
編集が終了したらTomcatを再起動してください。~
~

**Servlet API 2.3のfilterの使い方 --覚書 [#y3942f5b]
[[Java/filter]]に移動

**Tomcatのロールとレルムで認証機能を簡略化する [#wc195807]
crr(とあるテーブル)を間借りして使えるか検証中(03/06/18)~
jakarutaの解説ページは[[ここ:http://www.ingrid.org/jajakarta/tomcat/tomcat-4.0/webapps/tomcat-docs-ja/realm-howto.html]]~
ポイントは。。。
+JDBCレルムでVIEWが使えるか?
+制限をかける単位はどういった形で実現されるか?
と言った所でしょうか。。。


***JDBC Realm で、フォームベース認証 [#l2227a77]
-まず、crr に user と user_roles を作った
 create table users (
   user_name         varchar(15) not null primary key,
   user_pass         varchar(15) not null
 );
 
 create table user_roles (
   user_name         varchar(15) not null,
   role_name         varchar(15) not null,
   primary key (user_name, role_name)
 );


-server.xml の中に以下の Realm を宣言
 	<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" 
 	      driverName="org.postgresql.Driver"
 	   connectionName="★ないしょ★"
 	   connectionPassword="★ないしょ★"
 	   connectionURL="jdbc:postgresql://10.23.1.235/crr"
 	       userTable="users" userNameCol="user_name" userCredCol="user_pass"
 	   userRoleTable="user_roles" roleNameCol="role_name"/>
>この時点で、VIEWは使えるような気がします。((テーブル名を指定できるので…))~
>userTable と userRoleTable が指定できますので。。。~
>しかし、これを server.xml に直接書き込むのはつらいような気がする。DBから情報の取得に失敗した場合、例外でtomcatが起動しません。~
-対象 context((レルムを追加したcontext)) のWEBアプリの web.xml に以下のSecurity設定をおこなう
 	<security-constraint>
 		<web-resource-collection>
 			<web-resource-name>datasource</web-resource-name>
 			<url-pattern>/*</url-pattern>
 		</web-resource-collection>
 		<auth-constraint>
 			<role-name>2</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>
--この設定の場合、/datasource以下にアクセスするとまず/login.jspが表示される。~
--crrに作った「users」に登録されているID/passwordを入力すると /index.jsp に遷移する。~
--「users」に存在しなければ /loginError.jsp に遷移する。~

RIGHT:login.jsp & loginError.jsp 添付
#ref(login.jsp,right)
#ref(loginError.jsp,right)

--Securityでは「<role-name>2</role-name>」のみ対象となっているので「crr.users」に登録されていても「<role-name>2</role-name>」でないとページを参照できない。~
--ただ、ロールが違う場合は「403」が帰ってくるので、以下を web.xml に追加して回避した。~
 	<error-page>
 		<error-code>403</error-code>
 		<location>/roleError.jsp</location>
 	</error-page>

-違うステータスが帰ってくる場合もあるので、考えうるcode(404とか500とか)も全部記述してひとつのエラーページに飛ばすのがよいかと -20031017deku
***JDBC Realm で VIEW は使えるか? [#j27b6c57]
-結論から言うと使えます。
-とりあえず users と user_roles をひとつの VIEW にまとめます
 create view v_users 
 as 
     select users.user_name, users.user_pass, user_roles.role_name
     from users,user_roles 
     where users.user_name = user_roles.user_name
-server.xml の Realm を VIEW を参照するように変更します
 	<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" 
 	      driverName="org.postgresql.Driver"
 	   connectionName="★ないしょ★"
 	   connectionPassword="★ないしょ★"
 	   connectionURL="jdbc:postgresql://10.23.1.235/crr"
 	       userTable="v_users" userNameCol="user_name" userCredCol="user_pass"
 	   userRoleTable="v_users" roleNameCol="role_name"/>

>この状態でアクセスのテストをおこなった結果、特に何も問題ありません。

***JDBC Realm で制限をかける単位はどういった形で実現できる? [#t0badaa0]
-進んでません・・・

***JDBC Realm を Struts と連携させて利用してみる [#g76bdf00]
[[Java/Struts覚書]]



***Data Source Realm [#s944cb50]
-進んでません。。。

***JNDI Realm [#c6ebace9]
-進んでません。。。

~
**TOMCATをサービスで起動する [#if5d5645]
-http://www.geocities.co.jp/SiliconValley-Oakland/5924/win2000/tomcat33a/service.html

**TOMCATのディレクトリインデックスを見せない。 [#ff968918]
-web.xml
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.DefaultServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

 <param-name>listings</param-name>
 <param-value>true</param-value>
>を
 <param-name>listings</param-name>
 <param-value>false</param-value>
>にするだけ。

***Apache-Tomcat連携をしている場合の問題点 [#kcc44269]
-[[Tomcat-Apache連携を参照:http://dekuyou.ddo.jp/knowledge/index.php?%5B%5BTomcat-Apache%CF%A2%B7%C8%5D%5D#content_1_11]]
*その他の情報 [#if7b113c]

-web.xml にcommentで日本語を入れたらおかしくなった。。。覚書 -- [[web.xml ]] SIZE(10){2003-06-19 (木) 14:20:22}
-APサーバの機能にPreparedStatementをキャッシュする機能があるらしい。WebLogicは実装しているそうだがTOMCATは?実装していれば使うとパフォーマンスアップかも・・・ -- [[PreparedStatement]] SIZE(10){2003-10-13 (月) 17:42:18}
--http://www.atmarkit.co.jp/fjava/rensai2/webopt11/webopt11.html

-WebSphereもできるらしい・・・ -- [[IBM]] SIZE(10){2003-10-15 (水) 00:03:19}
// #comment

~
~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS