Develop and Download Open Source Software

Recent Changes

2011-03-30
2011-03-29
2011-03-23
2011-02-25
2010-05-20
2008-09-03

Wiki Guide

Side Bar

認証configの書式

結構いろいろあるので(制限含めてね)、ちとしっかりと、背景込みで。

# セッションID用の暗号フォーマット & 鍵
session_crypt_config = /opt/www/conf/admin_session_crypt.conf

いきなりですが暗号configの書式参照で。MWのセッションは「わざわざ暗号化までしてるから」比較的しぶとい…と思います。

# 制限値関連
# パスワードのエラー許容回数
# default 5
pass_error_count = 5

ユーザが「何回までパスワード間違えちゃっても心広く許容してあげるか」の回数です。1とかやるとタイトすぎるので適切な値を設定してください。
一応、デフォルトは5回を想定しています。
これを0(または負の値)にすることで「何回間違えてもロックしない」ようにはできますが、力技でパスワードクラックが可能になるので、可能な限り全力でそんな設定は回避してください。

# パスワードエラーでの一時ロック時間:単位は秒
# default 3600(sec) = 1h
pass_error_lock_time = 3600

上述の「pass_error_count」回数間違えると、そのアカウントは一時的にロックされます。そのロック時間をここで設定してください。
極論、ここが数分でもよいです。pass_error_countを無制限にするくらいなら、ここの時間を短くしてください。

# セッションの寿命:単位は秒
# default 600(sec) = 5min
session_expire = 600

1セッションあたりの寿命です。言い方を変えると「この時間だけ無操作ならいったんセッション切るからね」な時間です。
デフォルトは結構厳しいですが、長くても数時間の前半が限界じゃないかなぁと個人的には思うのですがどんなもんなんですかね?

# session_module_loginにまつわる設定
# login_id_form_name = ログインのときにIDが入ってるformの名前
# login_pass_form_name = ログインのときにpasswordが入ってるformの名前
# login_error_return_command = ログインにしくった時の移動用コマンド名
# login_return_command = ログインに成功した時の移動用コマンド名
login_id_form_name = id
login_pass_form_name = pass
login_error_return_command = index
login_return_command = top

session_module_login.incにあるsession_module_loginクラスを使うときに必要な設定です。
これを適切に設定すると、mapファイルに、IDとパスワードを入力するPageのコマンド設定を

login = session_module_login.inc:session_module_login
こんな風にかいておけば、あとは勝手に

  • もしIDとパスワードが無問題ならlogin_return_commandで設定されたPageに移動
  • もしIDとパスワードが問題ありりんならlogin_error_return_commandで設定されたPageに移動

を自動的に解決してくれます。
ちなみに微妙Tipsですが。認証後のPageは、base_model_authからの継承クラスにした上で、マウントポイントのメソッド名を通常のexecuteではなくexecute_authにしておくと、簡単に「ログイン後限定のPage」にできます。

# session_model_authにまつわる設定
# とはいえ一部はsession_module_loginでも使うんだけどね
# auth_key_cookie = Cookieを使ってkey埋め込むならon  default on
# auth_key_cookie_name = Cookieにkey埋め込むときのname default s
# auth_key_post = postを使ってkey埋め込むならon  default off
# auth_key_post_name = postにkey埋め込むときのname default s
# auth_key_get = GETは基本offだよねぇ?
# auth_error_return_command = 認証NGのときに遷移するコマンド名
auth_key_cookie = on
auth_key_cookie_name = s
auth_key_post = off
auth_key_get = off
auth_error_return_command = index

base_model_authで使います。…内容はコメントに書いてあるくらいで大体通じますよね?(あ、手抜き
注意点としては「auth_key_postがonのときでも別に勝手にhiddenを作ったりはしない」不親切設計なので、そのあたりはmodel側で実装よろ。…とはいえ何か対応はするかもしれないけどもしかしたら。

# セッションの寿命が迫ったときの対応方法
# 0:なにもしない(激しく非推奨
# 1:新しいセッションを作成する。古いセッションも寿命までは有効
# 2:新しいセッションを作成する。古いセッションは破棄する
# 3:寿命そのものを伸ばす(非推奨
# default 1
session_expire_flg = 1

コメントそのまま。特に問題なければ1番でよいと思うです。ちなみに1~3の動くタイミングは「TTL(寿命)が半分以下になったとき」。

# ログインのときのDBのほうの場所
# とりあえずテーブル構成は「きめうち」する。session_auth_clump.inc読んで。
# ここ自由にしてもしゃぁないっしょ。
#SELECT auth_user.id FROM auth_user WHERE auth_user.id = 'cgi(id)' and auth_user.pass = 'encrypt(cgi(pass))';
# auth_clump = authテーブルのclumpクラスファイル名 : クラス名
# auth_clump_table_name = authテーブルの名前。default auth_user
auth_type = 0
auth_clump = session_auth_clump.inc:session_auth_clump
auth_clump_table_name = auth_admin_user
session_clump_table_name = auth_admin_session

ほぼそのまんま。data_clump使ってるので、そっち系の知識が少し必要かも。

# パスワードの暗号種別
# sha-1, md5, 3des, rijndael(256), none
#password_crypt_type = sha-1 | md5 | 3des | rijndael | none
# default sha-1(…でいいかなぁ?) key ハッシュなのもあってdefaultはなし
password_crypt_type = sha-1

パスワードハッシュの種別。とはいえ、md5とかありえないしnoneなんて呪われてしまえ。基本はsha-1。個人的には次点でrijndaelを推したいけど、そのあたりは賛否両論なので微妙。


SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.