ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Apache Jakarta ProjectコミュのStruts×TOMCATでのBASIC認証についての質疑

  • mixiチェック
  • このエントリーをはてなブックマークに追加
oracleを利用してBASIC認証×JDBCレルムを利用して
ログオン認証をしようとしているのですが
わかりやすい文献の場所をご存知ならば
ご教授いただきたいと思います。

宜しくお願いします。

コメント(16)

『Webアプリケーション構築〈1〉Javaバイブルテキストシリーズ』にベーシック認証の実習もありましたよ。

いい本かどうか評価の分かれる本ですが、私の会社の新入社員研修に使いました。悪くは無いですが、これだけでは情報としては不足かもしれません。この本は前から順番に課題を進めていく必要がある本ですので、ちょっと使いにくいかもしれません。

『Jakarta徹底攻略』の初号か2号のTomcatの特集がある号も参考になるかと思います。
ご指導ありがとうございます。

実証しては見たものの
ログインは通るのですが
推移先の実行先に推移することが出来ず
「HTTPステータス 403 - 要求されたリソースへのアクセスが拒否されました」
というメッセージがコンソールから吐き出されます。

まだ何か設定が不足なんでしょうか?

未だにかなり悶絶して困ってます。
Strutsが込みの場合どうなるかはちと記憶に無いんですが…

すっぴんTomcatであればの話ですが、遷移先がservletならweb.xml(だったかな?)にコンテキストを書く必要があると思います。

あとオラクル絡みで詰まった覚えがあるんですが思い出せません。家に帰ったら調べます。

P.S思い出しながら電車の中で独り言を…職業病です
!思い出しました。!
オラクルでユーザーIDとPASSのデータ型はvarcharですか?char型だと上手くいかないはず。
VARCHAR2形でnot nullの10桁です。


#tomcat-user.xmlで何か書かないと駄目ですかね^^;
ぐむ。当てが外れたようですな。
またまた車中からお送りしています。今日は独り言に気をつけます。

さて、DBでTomcat認証するならTomcat-users.xmlは使わないはずです。DBを使うならserver.xmlに認証の種類とかJDBCは何を使うとかどのページで認証をするかを記述します。

家に帰ったらソースが残ってたと思うんで、詳しいことは後で書きます。

つか、@ITで調べてみたらよいですよ。確かやり方が載っていたと思います。
遅くなりました。

昔のソースを探してみたんですが、ちょっと見つからないです。一応今手元にあるオライリーの「Tomcatハンドブック」を見ているんですが、P.43にJDBC認証についての記述があります。また、ベーシック認証に関してはP.51に記述があります。

ちょっと、実験して確認していないんですが、Tomcat認証を利用するのに必要な部分を簡単に書きます。

Server.xmlにレルムを書きます。
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:test@192.168.0.1:1521:test"
connectionName="DBuser"
connectionPassword="DBpass"
userTable="userTBL"
userNameCol="user_name"
userCredCol="user_pass"
/>

web.xmlに
<login-config>
<auth-method>basic</auth-method>
</login-config>

<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
<web-resource-collection>
<security-constraint>

とこんな感じだったと思います。
上記の記述をxmlに追加すると・・・
LifecycleExceptionを吐いてしまいます。

ただし、auth-method内のタグを全部大文字にすると
起動はするのですが認証は行ってくれません・・・・

まだ足りないのでしょうか・・・;;
ぐむ、やはりちゃんと作って実証しないと駄目ですね。BASICのトコは大文字で良いと思います。後で上のxmlに注釈付けます。あと、確認してほしいトコも。
一度出来てしまえば「こんなもんか」と思えるはずなんで頑張ってください。
あと、あんまり適切な説明ができずスマンです。僕も調べますけど誰かよく知ってる人、居たらヘルプ願います。
とりあえず、うちでやってbasic認証できているxmlです。


---
<security-constraint>
<web-resource-collection>
<web-resource-name>The Entire Web Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Tomcat Supported Realm</realm-name>
</login-config>

<security-role>
<description>
An example role
</description>
<role-name>user</role-name>
</security-role>
---

変更するのは、<role-name>のところだと思います。
たまたま、roleをuserとしていますので、このような記述になっています。
roleを登録したdbの内容により適宜変更してください。
直接話が出来れば早いんですが、こういった形でのサポートは難しいですね。

えと、少しずつ確認しましょう。まず、テーブルの構成についてお尋ねします。ユーザIDとパスワードが対になったテーブルと、「もじら」a-chanさんがおっしゃるとおり、ユーザーIDとロールがセットになったテーブルが必要です。それらは出来ていますか?また、テーブルの構成はどうなっていますか?create table文で教えてもらえますか?
今日はもう遅いので、確認は明日させてください。DBの準備とAP、PPの準備は出来たから、明日xml作れば、試せます。もちっと待ってくださいな。
まず、基本的なユーザIDのテーブル
CREATE TABLE TIPS2.MAINTENANCE_USERS
(
USER_ID VARCHAR2(10) NOT NULL,
USER_PASSWORD VARCHAR2(10),
CONSTRAINT MAINTENANCE_USERS_PKEY PRIMARY KEY (USER_ID)
)

次にロール用のテーブルの定義。
CREATE TABLE TIPS2.ROLE_MAINTENANCE_USERS
(
ROLE VARCHAR2(128),
USER_ID VARCHAR2(12)
)

んで、もじらさんのxmlソースを流用した現在の状況の場合だと・・・
BASIC認証のダイアログは出るのですが
正しいパスワードを入れても遷移席にいけず
再び認証ダイアログが出てしまい
3回入力すると「HTTP Status 401」とブラウザで表示してしまいます。

お手数かけて申し訳ないです lilil orz lilil
えっと、どうやら
%CATALINA_HOME%common\libに
nls_charset12.jarとojdbc14.jarを入れることで
解決したそうです・・・。

同じ会社の人からアドバイスを受けました。

これってなかなかWEBで
載っていなかったような気がします・・・。

お騒がせして申し訳ないです。 lili orz ilil
ちなみにうちんとこは、tomcat4-4.1.xxです。
(kernel-2.4のlinuxです)
↑のjarは入っていなくても動作しておりますが・・・

仕事でsunoneをwin-xpに入れて使っているのですが、たしかに$〜\libには上記のjarを入れないと動かなかったです。

もしかするとwinのみ必須のjarなのでしょうか??
おろっ、解決したんだ。良かったですね。つか必要なクラスが無いってことは、先にコンソールに吐き出されたエラーを聞けば良かったですね。

僕はwin環境で作る事が殆どでしたが、そういった事象に出くわした事は今まで無かったっす。何でそうなったか気になりますね。

とにかくおめでとうございます。頑張ってこの先を完成させて下さい。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Apache Jakarta Project 更新情報

Apache Jakarta Projectのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。