同一ユーザによる同時ログインの抑止

同一ユーザによる同時ログインの抑止

- Suminori OKAMOTO の投稿
返信数: 13
登録済みのユーザが、たとえば複数のPCから同時に受講する.
というような事を禁止したいのですが、設定可能でしょうか?

Suminori OKAMOTO への返信

Re: 同一ユーザによる同時ログインの抑止

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
設定では難しいと思いますが、下記のようなプログラム改造により、同じユーザアカウントによる複数ログインを防ぐことは可能だと思います。

[Re: Two Simultaneous Logins]
http://moodle.org/mod/forum/discuss.php?d=22401&parent=542691
評点平均: お役立ち度: ★★★★★★★ (1)
Suminori OKAMOTO への返信

Re: 同一ユーザによる同時ログインの抑止

- Tatsuya Shirai の投稿

 LMSとして同一ユーザが複数の端末からログインして同時に***を実行するのは判別して防がなくてはいけない.これは非常に重要なことであるように感じます.

 少々興味があります.

 どのようなシチュエーションをOkamotoさんは考えているのでしょうか.具体的に防ぎたい行為を挙げて頂くと興味の度合いが更に向上するかも知れません.防止するメカニズムも異なるかもしれません.
 他の方からもご意見頂けるとMoodleの価値向上に役立つ機構の開発に繋がる可能性があります.是非とも想定される不正(?)行為を挙げて頂けないでしょうか.

 私はMoodleに対してFirefoxとIEとで同時にログインすることが多々あります.それぞれのブラウザの長所があるためです.HTMLエディタの親和性はIEの方が高く,Javascriptの中にはIEの方が/Firefoxの方が親和性の高い箇所があります.

Suminori OKAMOTO への返信

Re: 同一ユーザによる同時ログインの抑止

- Haruhiko Okumura の投稿
どうして禁止したいのか,よくわかりません。

例えばある端末がハングして,余っている別の端末でログインしたいというようなとき,ハングした端末からのログインがタイムアウトするまで(例えば30分とか1時間とか)ログインできないことになってしまいます。
Haruhiko Okumura への返信

Re: 同一ユーザによる同時ログインの抑止

- Haruhiko Okumura の投稿
訂正です。

第2の端末からログインしようとしたら,第1の端末でのログイン状態が即時にタイムアウトするような仕組みを付ければいいですね。

それでも複数ログインは便利なのであまり禁止してほしくないですが。
Haruhiko Okumura への返信

Re: 同一ユーザによる同時ログインの抑止

- Tatsuya Shirai の投稿

 私の予想では,ズルや不正アクセスを防ぐのが目的ではないか?と思っています.以下,私もなぜ同時ログインを防ぐのかが分からないので想像です^^;).


1.時間節約(ズル)

 複数のSCORMのコンテンツを全部見る事!という課題があったとします.
 うー,面倒くさいと思った場合に,2つ以上の端末を立ち上げてそれぞれでSCORMを再生する.なんと所要時間が1/nに!(n:同時再生するブラウザの数)

 でも,これは一つのPC上で二つ以上のブラウザを立ち上げて行ってもできることです.MACアドレス等で判別? 何らかの方法で1つのPCから同時にアクセスを禁止する方法が開発できたとしても,複数のPCを使用すれば破られてしまう.

 でも,根本的な解決は,一つのログインアカウントで同時に複数のSCORMコンテンツを再生できないようにすれば良い.「ただいまコンテンツを再生中」といった感じでしょうか.

 一つのブラウザで課題を表示し,別のブラウザ(あるいはタブ)でSCORMを閲覧した方が学習効率は良い(私も複数のコースを表示することがありますね.移動が面倒なので)ので同時アクセスを禁止しない方が良い.

2.不正アクセスの防止(その1)

 安直過ぎるパスワードを設定していた(時々,「僕のパスワードはaaaだ」などと自慢する学生がいる)ために,アカウントが乗っ取られる.授業中にイタズラでメッセージを送ったりして授業が混乱することが起こりえる...これはコンピュータリテラシーの良い教材ですね^^;

3.不正アクセスの防止(その2):代返

 誰かが気を利かせて「お,誰々が今日は休みだから出席モジュールで出席したことにしてやろう」というところで本人が遅れて登場.めでたく同一人物が二つのPCからログイン.でもこれは実害とは言いがたい.

4.不正アクセスの防止(その3):オンラインで試験

 情報処理センターなどで一斉にオンラインで試験を行う際に,誰か優秀な学生が他の学生の課題を解いて提出してくれる...その場合,不正を依頼した学生はログインしなければ良いので,これも該当しない.

5.不正アクセスの防止(その4):オンラインで試験

 優秀な学生のアカウントを不正に入手した学生が,試験中に優秀な学生が提出した課題をなりすましてログインしてダウンロード.自分のアカウントでログインし直して提出.その詐取する際に複数の端末から同一の学生がログインした状態になる.もし同一アカウントで複数の端末からログインできないように設定できるならば,各人,試験中はログアウトしないように指導すれば不正は防ぐことができる.
 でもコース単位で同時ログインを規制しないと,その時間中,他のコースの学生は複数のブラウザで同時ログインできなくなる.


以上,とりあえず5つほどシチュエーションを考えてみましたが,5を除いてログインを要求される段階でチェックを行う方法(required_login())で排除する方法がベストとは言い難いですね.

 何か我々が見落としているシチュエーションがあるのではないか? 是非とも6以降,何かお気づきの点がある方はアドバイス願います.

Haruhiko Okumura への返信

Re: 同一ユーザによる同時ログインの抑止

- Takayuki ISHIKAWA の投稿
画像 Developers

杞憂かも知れませんが、「第2の端末からログインしようとしたら,第1の端末でのログイン状態が即時にタイムアウトするような仕組み」をつけると、一旦 password が漏れてしまった場合、悪意を持つ者が bot を用いて log in 状態を持続させ、本人が log in して悪意者側が time out になっても即座に log in しなおし、本人に session を (事実上) 渡さない、という実装も可能になるかと思います。この場合、本人は password の変更すらできません (認証が moodle 外の場合は変更できます)。

Takayuki ISHIKAWA への返信

Re: 同一ユーザによる同時ログインの抑止

- Haruhiko Okumura の投稿
そうなんですよね。

同様な「DoS攻撃」として,パスワードを何回か間違えるとアカウントをロックする仕組みの悪用はよくあります。

英語のフォーラムにありましたように,アカウント単位で課金するオンライン有償授業では,一つのアカウントを使いまわされたくないというのはあるのでしょうね。
Haruhiko Okumura への返信

Re: 同一ユーザによる同時ログインの抑止

- Tatsuya Shirai の投稿

 なるほど,色々と貴重なネガティブな意見が出てきましたね.

 やはりどのような状況を想定して同一ユーザによる同時ログインを抑止したいと思われたのか,そのシチュエーションに俄然興味が沸いて来ましたね.恐れずに,是非とも情報提供よろしくお願いします.もしかしたらとても大切なことかも知れません.当初考えていたのとは別のアプローチでその機能を実現できるかも知れません.よろしくお願いします. > Okamotoさん.

Tatsuya Shirai への返信

Re: 同一ユーザによる同時ログインの抑止

- Suminori OKAMOTO の投稿
皆様、
ありがとうございます.

質問投げるだけ投げて、今やっと戻ってこれました.

目的がはっきりしてなくてすみません.
一つ言い訳させていただくと、逆に同時ログインの抑止は、普通に必要な機能かな?と思ってました.

というのも、有償サービスを念頭に置いていたからです.
つまり、同一のアカウントを複数の人で使いまわす.という事態が発生したら困るな...という発想です.


いずれにせよ、moodleには、こんな発想は合わないのかもしれませんね.
Suminori OKAMOTO への返信

Re: 同一ユーザによる同時ログインの抑止

- Haruhiko Okumura の投稿
> 有償サービスを念頭に置いていたからです.

なるほど。
英語版の質問も有償サービスがらみでした。
Suminori OKAMOTO への返信

Re: 同一ユーザによる同時ログインの抑止

- Tatsuya Shirai の投稿

 実際のところ,サービスの品質を落とさずに有償サービスの使い回しを防ぐ方法ってあるのでしょうか.

 毎日,コースの鍵を変えてメールで送信するとしたらサービスは低下しますし,USBのドングルという時代でもないです(PC以外からのアクセスができなくなる).Webカメラや音声で本人認証を行うところもあるとは思いますが(これは学位を出す場合のエビデンスとして).ただ,本人認証をなんらかのプラグインに任せて,本人認証したことを検知するAPIは用意してあると良いですね.

 IPアドレスやサブネットで複数の経路からログインすることを防いでしまうと,デスクトップPCで受講しながら,コンテンツの一部をスマートフォン等にダウンロードするといった作業が並行して行えなくなりますねぇ. 駅の待合室で無線LANから受講していて,おっと時間だ(←ログアウトし忘れ)と新幹線に飛び乗ったら続きを30分間は視聴できない,というのも困りますよね.

Tatsuya Shirai への返信

Re: 同一ユーザによる同時ログインの抑止

- Tatsuya Shirai の投稿

 ただ,それらのサービスが制限/低下するのは覚悟の上(ユーザの理解も得られる)で,同時アクセスを禁止する機能を選択できるようになっても良いと思います.

 その場合,

  1. サイト単位で禁じる
  2. コース単位で禁じる
  3. ユーザ単位で禁じる
  4. コンテンツ単位で禁じる

少なくとも1だけではなく,2,3はシステムで設定可能にしたいですね.2よりも3の方が少ない改造で対応できます.ユーザプロファイルフィールドを追加すれば良いからです.追加したユーザプロファイルフィールド(二値)がtrueのユーザについては,require_login()の処理において異なるセッションIDを持つユーザが居た場合にログインを拒絶するか,先にログインしているユーザを強制ログアウトさせれば良いでしょう.

あ,吉田さんが既にコードの参照先を示していますね.
データベースに項目の追加が必要ですね.セッションIDを保存しないとこちらからは判別できませんね.
このコードに基づいて上記仕様を組み込むことはそれほど難しくないかな?