lighttpd 資料一覧
ユーザ認証
2007/9/19更新
対応バージョン: 1.4.18
認証方式
ユーザ認証は以下の2種類がサポートされている。
ベーシック認証
ダイジェスト認証
また、それぞれの認証方式は複数のバックエンドに対応している。
ベーシック認証
プレーンテキスト
Apache htpasswd方式
Apache htdigest方式
(*) reply attackへの対応が完全ではない。
LDAP
ダイジェスト認証
プレーンテキスト
Apache htdigest方式
以上をふまえてlighttpd.confへの具体的な設定方法を説明する。
モジュール定義
server.modules = ( : "mod_auth", : )
デバッグモード
auth.debug = <設定値>
設定値
0
デバッグモードOFF
1
デバッグモードON(auth-okログのみ出力)
2
デバッグモードON(詳細ログを出力)
バックエンドタイプ
auth.backend = "<設定値>"
設定値
plain
htpasswd
htdigest
ldap
バックエンド毎設定
バックエンドの種類により、それぞれ以下の設定を追加する。
plain
auth.backend.plain.userfile = "<パスワードファイル>"
パスワードファイルは1行につき1アカウント情報を以下のフォーマットで設定する。
<アカウント>:<パスワード(平文)>
htpasswd
auth.backend.htpasswd.userfile = "<パスワードファイル>"
パスワードファイルは1行につき1アカウント情報を以下のフォーマットで設定する。
<アカウント>:<パスワード(htpasswdにて生成)>
パスワードファイルは以下の方法で生成する。
% htpasswd [-c] <パスワードファイル> <アカウント> New password: ***** ← パスワード Re-type new password: ***** ← パスワード
-c (create)
新規にパスワードファイルを作成する場合のオプション
htdigest
auth.backend.htdigest.userfile = "<パスワードファイル>"
パスワードファイルは1行につき1アカウント情報を以下のフォーマットで設定する。
<アカウント>:<Realm>:<パスワードを含むMD5値(htdigestにて生成)>
パスワードファイルは以下の方法で生成する。
% htdigest [-c] <パスワードファイル> <Realm> <アカウント> Adding password for neo in realm <Realm>. New password: ***** ← パスワード Re-type new password: ***** ← パスワード
パスワードはアカウント情報(1行分)全体をMD5で生成したダイジェスト値なので以下のようにして生成してもよい。
% echo -n "<アカウント>:<Realm>:<パスワード(平文)>" | md5sum | cut -b -32 8440869e50d27992146e9a4d87ea1a83 % echo "<アカウント>:<Realm>:<上記の文字列> >> <パスワードファイル>
ldap
まず、LDAPサーバへの接続情報を設定する。
auth.backend.ldap.hostname = "<LDAPサーバ>" auth.backend.ldap.base-dn = "<ベースDN>" auth.backend.ldap.filter = "(uid=<LDAPサーバ接続アカウント>)"
TLS(SSL)接続をする場合、以下の設定も追加する。
auth.backend.ldap.starttls = "enable" auth.backend.ldap.ca-file = "<LDAPサーバのCA証明書ファイル>"
認証エリア設定
認証を必要とするエリアを認証方法とともに設定する。
auth.require = ( "<認証エリア>" => ( "method" => "<認証方法>", "realm" => "<Realm>", "require" => "<許可アカウント>" ), : 必要数分 :
認証エリア
対象となるエリア(パス)
認証方法
以下のいずれか
basic
ベーシック認証
digest
ダイジェスト認証
Realm
認証ダイアログに表示されるサービス名
ダイジェスト認証の場合はパスワードファイル内のとも比較される
許可アカウント
以下のいずれか
valid-user
パスワードファイル全てのアカウントが対象
user=<アカウント>|user=<アカウント>...
パスワードファイル中の指定したアカウントのみ対象
「|」区切りで複数指定可能
例)
auth.require = ( "/pub/" => ( "method" => "basic", "realm" => "download archive", "require" => "valid-user" ), "/manager" => ( "method" => "digest", "realm" => "manager area", "require" => "user=manager1|user=manager2" ) )