このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

アクセス制限の管理

発言者:まさ
( Date Tuesday, April 21, 1998 21:01:54 )


こんにちは。

アクセス制限についてお伺いします。
一人一人に別々の、IDとPASSWORDを持たせたいのですが、今の私の考えでは
WebSTARの保護領域と、NetCloakなのですが。
実は、アクセス制限をしたいページの登録ユーザが現段階で300〜400人程度おります。
これぐらいの人数ですと、WebSTARの保護領域では管理が大変かなと思い、また、
NetCloakですと、ページにIDなどを書いていかなければいけないようなので、こちらも
大変かなと思いました。
認証を通った階層では自由に行き来ができて、なおかつブックマークされても次回の
アクセス時にまた認証をされるということはできますでしょうか?

以前にデータベースとの連携ができると聞いたことがあるのですが、それはどのように
するのでしょうか?

アクセス制限のページの下の階層に、ファイルメーカーのWEBデータベース公開をしたい
のですが、それとは別にパスワードなどのファイルと連動できるのでしょうか?
ファイルメーカーにもパスワード制限がありますが、その1つ上の階層でかけたいと
考えてます。

余談ですが、MacPerlでそういうプログラムを書いた場合に、WebSTARの保護領域の
ような、ダイアログは出せるのでしょうか?
本などのパスワード制限をみても、フォーム形式でやるのしかでていないので、気になり
ました。

ご存知の方、よろしくお願いします。


田中求之 さんからのコメント
( Tuesday, April 21, 1998 22:46:37 )

いろいろな点が絡まってきますので、簡単にはお答えできませんが、まず一点。

>余談ですが、MacPerlでそういうプログラムを書いた場合に、WebSTARの保護領域の
>ような、ダイアログは出せるのでしょうか?

出せます。フォームの方法しか紹介していないということであれば、その作者は HTTP
(プロトコル)に関する知識が足りません(きっぱり (^_^;; )。

Perl でのスクリプトは私は書けませんが、AppleScript でのサンプルを以前に
この会議室でも紹介したことがありますので、ごらんください。基本的には、
これをもとに、データベースとの連携システムを構築することになります。


→  CGI 中で Realm を定義する方法

まさ さんからのコメント
( Wednesday, April 22, 1998 18:38:17 )

初めて、applescriptを触ってみました。
田中先生の書かれたのを、いじろうと思ったのですが、どうもファイルメーカーに
聞きにいってからの、認証のあたりがわかりません。
どのあたりが間違ってるのか、ご指摘いただけますでしょうか?

---------------------------------------------------------------------
property crlf : (ASCII character 13) & (ASCII character 10)

property http_10_header : "HTTP/1.0 200 OK" & crlf ツ
  & "MIME-Version: 1.0" & crlf ツ
  & "Content-type: text/html" & crlf ツ
  & crlf

on ヌevent WWWスsdocネ path_args ツ
  given ヌclass userネ:username, ヌclass passネ:password
  
  tell application "ファイルメーカー Pro"
    open "***.fmj"
    show layout "レイアウト1"
    show every record
    
    
    if (username = password) then
      
      return "http/1.0 302 Found" & crlf & ツ
        "server: webstar2.0" & crlf & ツ
        "MIME-Version: 1.0" & crlf & ツ
        "Location: http://***.co.jp/index.html"
      
      
    else
      
      return "HTTP/1.0 401 Unauthorized" & crlf ツ
        & "MIME-Version: 1.0" & crlf ツ
        & "WWW-Authenticate: Basic realm=\"CGI Realm\"" & crlf ツ
        & crlf ツ
        & "<title>Not Authorized!</title>" & crlf ツ
        & "<h1>Not Authorized!</h1>" & crlf ツ
        & "Sorry, you aren't authorized to access this information."
      
    end if
  end tell
end ヌevent WWWスsdocネ
--------------------------------------------------------------------
最初に色々いじくってたときには、ダイアログが出てきたのですが、今のこの状態
だと、ダイアログもでてこなくなってしまいました。
全然見当違いな書き方をしてるかもしれませんが、ファイルメーカーに聞きにいって
からどうやって認証をおこなうのかを、教えていただければと思います。
よろしくお願いします。

田中求之 さんからのコメント
( Wednesday, April 22, 1998 22:17:57 )

認証のユーザー名とパスワードはファイルメーカーで管理するのですか?(400人ぐらい
でしたら WebSTAR で問題ないはずですけど)。

それと、紹介したサンプルは、HTTPにおける認証の基本的な仕組みを理解していただくのが
目的( CGI で保護領域を管理設定できるということを示す)ですので、そのままでは
実用性はゼロだと思ってください。

認証のためのデータをファイルメーカーから取り込んで、それで認証を行うという仕組み
にしたとして、あのままでは、最初に認証がパスしたとしても、その後のアクセスにおいて
サーバー側でユーザー確認をそのつど行わなければなりませんので、実用性はあまりない
と思います(ユーザー確認だけでファイルメーカーが忙殺されてしまう危険があります)。
いったん認証をパスしたユーザーには、セッション間のみ有効なテンポラリの Cookie
を発行し、その Cookie によってアクセスを認める(これだと NetCloak などでも
対応可能でしょう)といった方法を考え出す必要があります。

まずはスクリプトや HTTP の解説文書などで、Web の認証の仕組みを理解してください。
そして、データベース上のデータとどのように連携させて(ユーザー名とパスワードは
データベースにあるものを使うのか、そのつどデータベースを検索してユーザー確認を
行うのか、あるいはいったん認証にパスしたユーザーをどう扱うのか等、検討すべき
事項は多岐にわたります)認証システムを組むのかを考えてください。
↑
*最初のコメントで「色々絡まっており、簡単に答えられない」といったのはこういう
ことです。

まさ さんからのコメント
( Thursday, April 23, 1998 10:11:02 )

>認証のユーザ名とパスワードはファイルメーカーで管理するのですか?(400人ぐらい
>でしたら WebSTAR で問題ないはずですけど)。
当初は、WebSTARで考えていましたが、Realmだと検索文字で他のフォルダにひっかかって
しまう恐れと、ユーザの登録は別として変更や削除があった場合に何百人のなかから選んで
変更などをするのは大変かなと思って、CGIで考えていました。
けれど、色々やってみた結果、今のところはWebSTARでやることにしました。
Realmの方も、同じようなフォルダ名があった場合フォルダ名の最後に「_」などを入れると
かからないようでしたので。

>まずはスクリプトや HTTP の解説文書などで、Web の認証の仕組みを理解してください。
はい。
まず、HTTPについて理解してからやるべきですね。
それからですね。認証などについて質問するのは。
それで、データベースとの連携について検討してつまったら、もう一度質問させて下さい。

>最初のコメントで「色々絡まっており、簡単に答えられない」といったのはこういう
>ことです。
そんなに色々絡んでるとは思ってませんでした。
ただ単に認証といっても、かなり奥が深いですね。
自分では、ダイアログの出し方しか頭にありませんでした。

もう少し、調べてから取り組みたいと思います。
田中先生ありがとうございました。