- PR -

basic認証でログインした際にログイン中のユーザを表示できますか?

1
投稿者投稿内容
のり
ベテラン
会議室デビュー日: 2006/04/07
投稿数: 61
投稿日時: 2006-11-08 13:12
こんにちは。

件名の通りの質問なのですが、
現在、CentOS4.3上でapheche-2.0.52-28を使用してホームページを公開しています。

今回やりたい事は、メンバーページなるものがあり、
そこへ行くためにはBasic認証を使用しています。(apacheのhtpasswd)

そのページに現在どのIDがログインしているかを表示したいのですが、
そのような事はできるでしょうか?

AとBとCがログインしていれば、
”現在、A・B・Cさんがログイン中です。” のように表示したいのです。

Basic認証ではできないような気もするのですが、
その判断が分からなかったので、掲示させて頂きました。

このままでできれば、一番良いのですが、無理で、
何か違う方法があればその当たりもご教示頂ければ幸いです。

よろしくお願いします。
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2006-11-08 13:30
引用:

そのページに現在どのIDがログインしているかを表示したいのですが、
そのような事はできるでしょうか?



要件定義について伺います。
BASIC認証にログイン・ログアウトの概念はありませんが、
何をもってログインしていると見なしますか?
のり
ベテラン
会議室デビュー日: 2006/04/07
投稿数: 61
投稿日時: 2006-11-08 15:45
kalze様ありがとうございます。

引用:

BASIC認証にログイン・ログアウトの概念はありませんが、
何をもってログインしていると見なしますか?



そうですね。
Basic認証にログアウトという概念がなかったんですよね。

安易に認証が成功した時点でのログイン者を表示したかったのですが、
ログアウトの概念がないということが、入った時はいいけど、
表示させない(ログアウト)タイミングが分からないということですよね。。。

ということは事実上現在では無理ということになりますよね?

JavaScriptや他の方法で何かないでしょうか!?
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2006-11-08 16:30
引用:

Basic認証にログアウトという概念がなかったんですよね。


という条件が分かってるなら、
「何をもってログアウトとするのか」
「その状態をどうやってサーバ側に認識させるのか」
というのを「決める」必要があります。

それについでどう考えてますか?
_________________
Mattun
Microsoft MVP for Directory Services
(Oct 2006-Sep 2007)
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2006-11-08 16:39
引用:

Basic認証にログアウトという概念がなかったんですよね。

安易に認証が成功した時点でのログイン者を表示したかったのですが、
ログアウトの概念がないということが、入った時はいいけど、
表示させない(ログアウト)タイミングが分からないということですよね。。。



ログインという概念もないと思いますが。

BASIC認証は、そのリクエストされたリソースにアクセスするための認証でしかないのではないかと。
そのリクエストに答えてもよいのかどうかアクセス権限のための認証だとおもいますが。


Mattun様も指摘されていますが、httpの仕様(規格?)上、何をもってログインしている状態とするかを決めないといけないかと。
一般的にログイン・ログアウトのあるWEBサイトでも、
・ログインフォームでログイン手続きをして認証に成功したらログインとする
・ログインした者を認識するためにセッションIDを用いる
・ログアウトの手続きを行うとログアウトとする
・最後のアクセス(リクエスト)から一定時間経過したらログアウトとする
とかそういう定義があるわけです。


Tasuku
大ベテラン
会議室デビュー日: 2006/09/14
投稿数: 106
お住まい・勤務地: tokyo
投稿日時: 2006-11-08 17:03
Basic認証の特徴は、「ログインした状態」を把握しているのが
クライアント(ブラウザ)の側だけ、ということですね。

一度、認証が成功したことが確認されると、ブラウザの側が、
次回以降、同一のURLディレクトリ配下のコンテンツにアクセスするときに、
都度都度、自動的にユーザー名/パスワードをWebサーバに
通知してくれているだけです。

サーバから見ると、都度都度、ユーザー名/パスワードを通知してくる
クライアントがいる。それを都度都度認証している。だけです。

なので、以下の作り込みが必要です

1. ログインしたユーザーをサーバ側APLがDBなり、ファイル(*)に記録する
  → ユーザー名はHTTPヘッダに含まれますので、php、java、perlあたりなら取得可能でしょう

2. ログアウトした旨を明示的に通知してきたユーザー、または、
  一定時間アクセスがないユーザーをログアウトしたと見なし、(*) から消す
  → ログアウト通知は、FORMからサーバ側アプリに渡すしかありません

3. 今誰がログインしているかは、(*) を参照して取得する
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-11-08 17:09
引用:

のりさんの書き込み (2006-11-08 13:12) より:

そこへ行くためにはBasic認証を使用しています。(apacheのhtpasswd)

そのページに現在どのIDがログインしているかを表示したいのですが、
そのような事はできるでしょうか?


CGI を自作して、非公開サイトにアクセスする度に、その CGI からアクセスしたユーザー名と最終アクセス時刻のタイムスタンプをファイルに吐き出す。

ログアウト処理か、一定時刻以上経過したらログアウトしたものとみなす。

上記のファイルの内容を参照して現在アクセス中「だと思われる」人のリストとする。

と言う感じなら実現できるかもしれませんね。
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
のり
ベテラン
会議室デビュー日: 2006/04/07
投稿数: 61
投稿日時: 2006-11-08 17:45
皆様、多数の回答ありがとうございます。

皆様の参考させて頂いた限り、作り込みが発生するのですね。。。

私に開発能力があれば、皆様のご教示を元に早速作ってみます!
という感じなのでしょうが、簡単にはというわけにはいかなさそうです(汗)

1

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