Provided by EDB working group. $Id: ldap-ac.html,v 1.5 2012/11/28 13:30:06 alex Exp $

目次

1. まえがき

EDB認証機構を利用した汎用WEBサーバのための使い捨てパスワード発行システムのまえがきと同様.

2. 前提事項

本システムを利用するにあたりWEBページ作成者は以下の事柄を了解する必要がある.

3. WEBサーバに要求される事項

現存のほとんどのUNIX+WEBサーバ(Apache)はこれぐらいのことは設定次第で可能なので心配はありません. (その他のOSについては未調査ですが,並のOSならばできるでしょう)

4. システム概要

通常,WEBサーバのユーザ認証はサーバ内に用意したパスワードファイルの情報をもとにして行なわれる. 本システムでは,このパスワードファイル(以下の例では".passwd")の内容を

で制御する.

本システムの動作を簡単に説明すると次のようになる.

アクセス制限されたWEBサーバのページにアクセスしたユーザは,徳島大学統一認証基盤における利用者認証を受けることを要求される. 利用者認証に成功した場合,目的のWEBサーバに対して〔ユーザID,使い捨てパスワード〕のアカウント登録要求(CGI)を行ない,WEBサーバ上にその利用者のアカウントを登録する. 利用者には,〔ユーザID,使い捨てパスワード〕を埋め込んだURLによるリンクを提示する. 利用者は,提示されたリンクを辿ることにより,目的のWEBサーバへアクセスすることが可能となる.
本システムの動作を詳しく説明しよう.
まず,役者を紹介する. 以下,本ページの例では, の場合を示している. すなわち,クライアント(CLI)がWEBサーバ(WEB)にあるアクセス制限されたコンテンツ($L: http://web.db.tokushima-u.ac.jp/ac-example/)にアクセスするという状況を考えている.

4.1 認証手順

認証手順は以下のように行なわれる.

  1. CLI → WEB : $Lの入口のページにアクセス.
  2. WEB → CLI : リンク「LDAP_AC?R=$R&L=$L&I=$I」が含まれたページを返す.
  3. CLI → CMS-LDAP : 「LDAP_AC?R=$R&L=$L&I=$I」にアクセス.
  4. CMS-LDAP → CLI : 認証画面を表示.($R, $L, $Iを保存)
  5. CLI → CMS-LDAP : (認証対象者,パスフレーズ)を送信.
  6. CMS-LDAP → CLI : (認証対象者,パスフレーズ)を検証.
    • 失敗: 手順終了.
    • 成功: ユーザID($U), 使い捨てパスワード($P)と$Pの暗号化パスワード($CP)を合成.
  7. CMS-LDAP → WEB : パスワードを登録するためのアクセス($R?U=$U&P=$CP&I=$I)を行なう.
  8. WEB: CGI($R)は$U,$CP,$Iの情報を用いてパスワードファイル(.passwd)を変更.
  9. WEB → CMS-LDAP: 終了ステータスを返送.
    • 1xx: 失敗
    • 200: 成功
  10. CMS-LDAP → CLI : WEBに登録したユーザID($U), パスワード($P)の情報を画面に提示.
  11. CLI → WEB : $Lに$U, $Pを用いてアクセス.
  12. WEB → CLI : 認証の結果,$Lの内容を返送.

4.2 パスワードの消去

上記の認証手順で登録されたパスワードは自動的には消去されないので,何らかの手順を行なうことが必要です.
本システムでは,WEBサーバ上で動作するCGIプログラム($R)を利用して,パスワードの無効化手続きを行ないます.
現在用意しているCGIプログラム($R).ldap-regist.cgiを利用すると,

に(古い)パスワードを消去します.

5. 導入手順

EDB認証機構を利用した汎用WEBサーバのための使い捨てパスワード発行システムの導入手順とほぼ同様.

6. 技術的側面

EDB認証機構を利用した汎用WEBサーバのための使い捨てパスワード発行システムの技術的側面とほぼ同様.

7. むすび

EDB認証機構を利用した汎用WEBサーバのための使い捨てパスワード発行システムのむすびとほぼ同様.

付録

A.2 アカウント登録用CGIプログラムの改造について

本システムでは,WEBサーバ側の要求に合わせて,アカウント登録用CGIプログラム(.ldap-regist.cgi)を改造することを禁止していません. WEBページ作成者の責任において自由に変更して下さい. プログラミング言語Perlで書かれている必要もありません. ただし,サーバからのアクセスは

	CGIプログラム?U=$U&P=$CP&I=$I
のようになっておりますので,これらの引数を正しく処理するようにして下さい. また,CGIプログラムの出力は,'Content-Type: text/plain'形式とし, 正常に終了した場合には,
	STATUS: 200 何らかのメッセージ
何らかの理由で失敗した場合には,
	STATUS: 100 失敗の原因を示すようなメッセージ
を返答して下さい.

A.3 超簡単設定手順

Linux や FreeBSD などのOSで,ApacheでBasic認証やCGI利用のための設定がすでに完了していて,構成員(学生,教職員)に限定したページを作成する場合.

  1. tutorial% su アパッチの実行ユーザ名
  2. tutorial% cd $TOP …($TOP はアパッチのドキュメントルート.以下,同様)
  3. tutorial% mkdir for-students …(構成員に限定するコンテンツを入れるディレクトリ)
  4. tutorial% cd for-students
  5. .ldap-regist.cgi を ".ldap-regist.cgi" にダウンロード.
  6. .htaccess を ".htaccess" にダウンロード.
  7. tutorial% touch .passwd
  8. tutorial% chmod +x .ldap-regist.cgi
  9. tutorial% ./.ldap-regist.cgi
    Perlがないというメッセージが出たら,".ldap-regist.cgi" の1行目を修正.(正しいperlのパスを設定する)
  10. tutorial% vi .htaccess
    • 「AuthUserFile ...」を「AuthUserFile $TOP/for-students/.passwd」に変更する.
    • 「ErrorDocument 401 ...」の行の 「L=...」を「L=http://貴方のサーバの名前/for-students/」に変更する.
  11. tutorial% vi index.html …何かページを作成する.他からコピーしても良い.
  12. 閲覧ソフトでhttp://貴方のサーバの名前/for-students/をみる.
    • ユーザ名,パスワードを聞いて来ない.→WEBサーバ管理者にアクセス制限設定について相談.
    • 徳島大学統一認証基盤の認証はとおるが,アカント登録に失敗する.→WEBサーバ管理者にCGI実行権限について相談.
    • その他,正常にログインできない..→メッセージ,現象をみて考える.わからなければ有識者に尋ねる.
  13. tutorial% crontab -e
    	45 * * * * $TOP/for-students/.ldap-regist.cgi > /dev/null
    という行を追加する.
  14. 終了.(以上の作業で,$TOP/for-students/以下のコンテンツが構成員に限定される)
    • ログインできるユーザを制限したい.→付録A.4(パスワードファイルの作成方法)を読む.
以上,超簡単な説明でした.

A.4 パスワードファイルの作成方法

本ページで提供するWEBサーバ上のパスワード登録CGI(.ldap-regist.cgi)が扱うパスワードファイルは,Apacheのhtpasswdコマンドで作成されるパスワードファイルの拡張になっています.
拡張されたパスワードファイルの様式は,1行毎に

	ユーザID:暗号化パスワード:ライフネーム:登録時刻
が記述されます. それぞれのフィールドは,
  • ユーザID: ユーザ名(本システムでは,【個人】情報のEID)
  • 暗号化パスワード: MD5で暗号化されたパスワード
  • ライフネーム: ユーザの現実名(コメント)
  • 登録時刻: UNIX TIME (second)
となっています.(htpasswdでは,`ユーザID'と`暗号化パスワード'のみが作成され,Apacheのユーザ認証ではその2つだけが利用される.)

□ 徳島大学統一認証基盤ユーザを全て受け入れる
.ldap-regist.cgi の設定パラメータ $accept_ldap_user を 1 にセットして下さい. 徳島大学統一認証基盤で認証可能な利用者(すなわち,全構成員)を全て受け入れます.

□ 徳島大学統一認証基盤ユーザ以外のユーザを登録する.
徳島大学統一認証基盤ユーザのユーザIDと重複しないユーザ名(徳島大学統一認証基盤ユーザのユーザIDは現在S, c, Vのいずれかの文字で始まる名前である.ただし,これは将来追加されるかも知れない.)を選び, htpasswdコマンドを用いて,
	% htpasswd .passwd ユーザ名
	Enter new password: password
	Re-enter new password: password
のようにすると,ユーザを登録することができます.(passwordの部分は画面にエコーバックされません)
当然ながら,このように作成したユーザについては,ユーザ名とパスワードを本人に知らせる必要があります.