- PR -

フォルダ単位のアクセス制限

投稿者投稿内容
LEID
会議室デビュー日: 2002/09/25
投稿数: 18
投稿日時: 2003-01-07 17:20
 サーバに複数のフォルダを設置し、そのフォルダの中のファイル一覧を
表示し、そのファイルをダウンロードできるプログラムを組む必要があるのですが。
ファイルのダウンロードのさせかたで行き詰まっています。

それぞれのフォルダには、複数のユーザがそれぞれ閲覧権限のあるフォルダのみ
アクセスでき、他のユーザが自分のフォルダ以外にアクセスできないようにする
必要が有るのです。

自分で色々考えたのですが具体的にどうしたらいいのか分から無いので
アドバイス、参考URLなど教えていただければ幸いです。

以下に自分で考えた方法を記します。

◆サーバのwwwサーバとして公開していないディレクトリにフォルダを設置し
Servlet側でファイル名を受け取り、ユーザがそのフォルダに対しての閲覧権限があれば
そのフォルダ以下のファイルをクライアントにダウンロードさせるようにする。

perlではこのような事が出来たと思うんですが、JAVAでの実現方法が分かりません。
どなたか御存じないでしょうか?

◆サーバ環境
サーバOS:Windows2000
Servlet:Apache Tomcat 4.0.4
JSDK:j2sdk-1_4_0_01-windows-i586
kouichi
会議室デビュー日: 2003/01/04
投稿数: 17
投稿日時: 2003-01-08 03:41
>perlではこのような事が出来たと思うんですが
Perlにそんな機能ありましたか?
PerlではなくてApacheの「.htaccess」のことではないでしょうか?

「.htaccess」のセキュリティー(メンバーのみ閲覧可)のようなことなら
TOMCATでも「server.xml」だかなんだかの設定ファイルで実現できます。
ApacheとTOMCATを連携させてApacheそのもを使う手もありかと思います。

サーバープログラムに頼らないのなら
自作でユーザー認証などを作成する必要がありますね
ユーザー認証を自作してしまえばユーザー毎に閲覧可
フォルダ情報を登録してしまえばよいのですから
いくらでも作りようがあると思います
LEID
会議室デビュー日: 2002/09/25
投稿数: 18
投稿日時: 2003-01-08 09:51
>>perlではこのような事が出来たと思うんですが
>Perlにそんな機能ありましたか?
>PerlではなくてApacheの「.htaccess」のことではないでしょうか?
ダウンロードカウンターとかあるじゃないですか。
cgiに対象のファイル名を渡してダウンロードさせる奴です。
コレにセッション管理とかでユーザを識別させ、その対象ファイルの
閲覧権限があればダウンロードできるとか出来ないかなとか。

「.htaccess」のセキュリティー(メンバーのみ閲覧可)のようなことなら
TOMCATでも「server.xml」だかなんだかの設定ファイルで実現できます。
ApacheとTOMCATを連携させてApacheそのもを使う手もありかと思います。

>サーバープログラムに頼らないのなら
>自作でユーザー認証などを作成する必要がありますね
>ユーザー認証を自作してしまえばユーザー毎に閲覧可
>フォルダ情報を登録してしまえばよいのですから
サーバプログラムに頼らないユーザ認証の自作とはどのようなモノでしょうか?


URLの直打ちでユーザが他のユーザのフォルダの中身を
ダウンロードさせるわけにいかないんです。
Windowsのフォルダのアクセス権の設定で制御しようかとも思いましたが、
ユーザ数が多いことと、たびたびユーザのアクセス可能フォルダの変更
などが生じて管理が煩雑になると思われます。

wwwからアクセスできない場所にフォルダを設置し、サーバサイドプログラムを
通じてソレにアクセスできればベストなんですが。

H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2003-01-08 11:08
できますよ。

0.ログイン・セッションスタート
1.Servlet・JSPへディレクトリへのパスを渡す
2.ディレクトリパスを物理的な公開されていないサーバのファイルパスへと変換
3.ユーザがそのファイルパスへのアクセス権限を持っているかをチェック。
 (これはやり方がいろいろとあると思います)
4.チェックがOKならディレクトリ内のファイルをリストアップ

って感じですか?ファイルをダウンロードさせるのも同じ感覚でいけるはずです。それとも既存の出来合いのものをお探しなのでしょうか?

#CGIでできるぐらいならServlet/JSPでもできるはず。できなかったらかなり哀しいです。

[ メッセージ編集済み 編集者: H2 編集日時 2003-01-08 11:09 ]
LEID
会議室デビュー日: 2002/09/25
投稿数: 18
投稿日時: 2003-01-08 11:40
>H2さん
詳しい解説ありがとうございます。

ディレクトリのファイル一覧の参照は作成出来ると思うのですが。
wwwに非公開のディレクトリのフォルダのリスト表示は出来たのですが、
いざそのファイルのダウンロードのさせかたをどうするかが、、、。

1.ファイルリストよりファイルを選択
2.ユーザにアクセス権が有ればダウンロード可能状態(?)にする
  (セッション管理でアクセス権の管理は出来ると思います)
3.非公開ディレクトリのファイルをダウンロードさせる

と言った流れになると思うのですが。
wwwルートに無いファイルのダウンロードのさせかたが分からないのです。
ファイルを読み出して出力するのでしょうか…。

JAVAのサンプルを探して回ったのですが見つからず掲示板の過去ログも
色々見て回ったのですが該当するようなのが見つかりませんでした。

いいサンプルがあれば嬉しいんですが。

#確かにJAVAで出来なかったら、、、泣けます。出来そうだけど分からない、
にんともかんともにんにん
flower
会議室デビュー日: 2002/10/15
投稿数: 14
投稿日時: 2003-01-08 12:34
ServletOutputStreamなどでダウンロードは可能です。

画像のダウンロード
http://www.itboost.co.jp/jserv/jserv_14.php

上のページはダウンロードさせるファイルがバイナリですが、テキストでも
同様だと思います。
LEID
会議室デビュー日: 2002/09/25
投稿数: 18
投稿日時: 2003-01-08 16:18
>hanamogera さん
サンプルありがとうございました。
www非公開ディレクトリのファイルの表示に成功したのでなんとかなりそうです。
今回はエクセルファイルの配布なのでエクセルファイルのContentTypeを調べて、、、
プログラムにファイル名を渡し、認証し、権限のあるディレクトリの該当ファイルを
出力させる、、、といった流れで作ってみます。

皆様ありがとうございました。
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2003-01-09 10:26
web.xmlでどんな事ができるのかは調べましたか?
例えば、
http://www.sk-jp.com/java/servlet/webxml.html
のsecurity-constraintとか。
自作するより、コンテナに任せる方が良いと思います。

スキルアップ/キャリアアップ(JOB@IT)