ネットワーク認証を行うにはどうすればよいですか?

解決


かわにー  2002-07-05 14:44:31  No: 1077  IP: [192.*.*.*]

クライアント側のプログラムは、(レベル1)データの閲覧、(レベル2)データの閲覧&入力、(レベル3)データ閲覧&入力&削除、機能があります。この機能を、IDの入力で利用出来るレベルを制限したいのです。
プログラム中にIDとレベルを固定で書き込んでおけば簡単なのですが、事業者が何箇所かある事と人員の入れ替わり等で常に全てのプログラムを更新する必要に迫られます。そこで、レンタルサーバーに、サーバー用のプログラムを置いて、そこで管理を行いたいと考えました。
本で調べたところClientSocketでIDを送信して、サーバー側はそれを見て利用可の名レベルを返答してやればよさそうだと思いました。これならばサーバーに置いたプログラムのID←→使用可能レベルの対応テーブルのメンテナンスだけで済みそうです。
長くなりましたが、ここでわからないのはサーバーに置いておくプログラムです。ServerSocketを貼り付けて作成して出来たexeをレンタルサーバーに置けばそれだけでよいのでしょうか?(起動がかからないような気がします)
この辺りは全くの初心者で変な事を書いているかもしれませんが、そのようにすればよいのか教えて下さい。またわかりやすい書籍やHPがあれば教えて下さい。よろしくお願いします。

編集 削除
にしの  2002-07-05 16:25:10  No: 1078  IP: [192.*.*.*]

サーバはWindowsですか?Linuxですか?
Windowsであって、ISAPIが使えるなら、Webサーバアプリケーションで実現できます。
Linuxであって、Kylixが動けば、Kylixで似たようなことができると思います。
それ以外では、Delphi(もしくはKylix)で作ったアプリケーションは動かないと思います。

> プログラム中にIDとレベルを固定で書き込んでおけば簡単なのですが
これが簡単ならば、DBに登録しておいてとってくればいいのでは?
DBでなくても、テキストファイルに暗号化していれておけばよいです。

編集 削除
かわにー  2002-07-06 00:16:12  No: 1079  IP: [192.*.*.*]

にしのさんありがとうございます。
サーバー側にプログラムを置いて処理出来ればよいなと思っていましたが、ご指摘の通り、テキストか何かのファイルに登録しておいて、クライアント側でそれを読み込んでチェックする、とすれば、サバー側に置いたファイルを定期的にメンテナンスしてやるだけで済みそうです。
★簡単と書いたのは、各クライアントソフト側にその情報を定数として持たせておけば、という事でこれだと事実上メンテ不可能なんです。

それで質問ですが
レンタルサーバー上に置かれているファイルを読み込み方法ですが、どういった方法になるのでしょうか、NMFTPを試しましたがダウンロードは出来るようですが一旦HDDに出力しなければならないのでセキュリティ的に少し問題があります。出来れば通常のファイル読み込みのように、プログラムの中だけで処理してしまいたいです。htmlで書いておいて、NMHTTPというのも考えましたが、万一見られるとマズイですし…。
よろしくお願いします

編集 削除
にしの  2002-07-06 14:15:35  No: 1080  IP: [192.*.*.*]

簡単にするならば、サーバで動作するCGIを用意して、それをNMHTTPで呼ぶというてもあります。
# もちろん、CGIとのやりとりにはデータ呼び出し用のパスワードを用意しておきます。

FTPくらいなら、直接TCP/IPを呼んでも動きそうですが…。
MonsterFTPでも、ファイルに落とさないとみれませんでしたっけ?
MonsterFTPというFTPコンポーネントは、
http://www.torry.net/
にあります。

編集 削除
かわにー  2002-07-07 14:55:41  No: 1081  IP: [192.*.*.*]

にしのさんありがとうございました。大変参考になりました。いろいろ調べてみます。またよろしくお願いします。

編集 削除
にしの  2002-07-07 18:46:28  No: 1082  IP: [192.*.*.*]

セキュリティを考えると、1つだけ注意があります。
httpは、とても簡単に解析されてしまいます。
1回のパスワード渡しだと、すぐにばれてしまうので、ランダムな文字列に対するIDをサーバに発生させて、そのIDに対するパスワードを送るようにするなどの小細工が必要になります。
たとえば、

サーバに、ランダムに発生させた文字列"1234"を送る。
サーバから、"1234"に対応する"ABCD"が送られる。
サーバに、ABCDに対応するユーザIDとパスワードを送る。

という具合です。
"1234","ABCD"は例ですが、四則演算・論理演算を複数使えば、いくらかは解析しにくくなります。
もちろん、パスワードを間違えた場合は、同じランダム文字列に対応するパスワードは1日当たらないようにするとか、同じIPアドレスからの要求に5分間対応しない、なども必要になります。

編集 削除