*ユーザー認証 [#ba52fee9] ユーザー認証機能を利用することで、ページの閲覧制限、編集制限、検索制限をすることができます。 デフォルトではPHP Sessionを利用し、PHP5.1以降で動作させる必要があります。PHP5.0以前の環境で動作させる必要がある場合はBasic認証を利用してください。 ユーザーアカウント(ユーザー名とパスワードの組み合わせ)管理の方法は、3種類あります。 - PukiWiki内定義(pukiwiki.ini.phpでユーザーを定義) - LDAPサーバーで管理 - 外部システムで管理 認証情報の入力方法(auth_type)として3種類の方法があります - Form認証: PukiWiki内のHTML formを利用 - Basic認証: Webブラウザの機能を利用したHTTP認証 - 外部認証: PukiWiki外で認証した結果をPukiWikiで利用する 利用可能な組み合わせは限定されており、以下のようになります。 |auth_type|入力方法 |アカウント管理 |Session利用|h |AUTH_TYPE_FORM|Form認証 |PukiWiki内定義 |利用する | |AUTH_TYPE_FORM(LDAP)|Form認証 |LDAP |利用する | |AUTH_TYPE_BASIC|Basic認証 |PukiWiki内定義 |利用しない | |AUTH_TYPE_EXTERNAL|外部認証 |外部システム |利用する | |AUTH_TYPE_EXTERNAL_REMOTE_USER|外部認証 |外部システム |利用しない | |AUTH_TYPE_EXTERNAL_X_FORWARDED_USER|外部認証 |外部システム |利用しない | #contents ** AUTH_TYPE_FORM (PukiWiki内ユーザー定義) [#i0c9927f] *** pukiwiki.ini.php 設定 [#xb58665f] $auth_type = AUTH_TYPE_FORM; ***ユーザー定義 [#o23a6a7a] アクセス制御で使用するユーザ名とパスワードを pukiwiki.ini.php 内で設定します。 ///////////////////////////////////////////////// // User definition $auth_users = array( // Username => password 'foo' => 'foo_passwd', // Cleartext 'bar' => '{x-php-md5}f53ae779077e987718cc285b14dfbe86', // PHP md5() 'bar_passwd' 'hoge' => '{SMD5}OzJo/boHwM4q5R+g7LCOx2xGMkFKRVEx', // LDAP SMD5 'hoge_passwd' ); - パスワードの暗号化形式を複数の中から選択できます。(利用可能な暗号化形式など、詳細は[[dev:BugTrack/709]] へ) パスワードを暗号化せずに書く事も可能ですが、 何らかの理由(アクセス権限設定のミスなど)で設定ファイル(pukiwiki.ini.php)が他者に覗かれるような事態の可能性を考えると、暗号化したパスワードをタイプしておくほうが安心です。 ** AUTH_TYPE_FORM(LDAP) [#j18b2149] *** pukiwiki.ini.php 設定 [#nb9e9f7b] $auth_type = AUTH_TYPE_FORM; $ldap_use_account = 1; $ldap_server = 'ldap://ldapserver:389'; $ldap_base_dn = 'ou=Users,dc=ldap,dc=example,dc=com'; $ldap_bind_dn = 'uid=$login,dc=example,dc=com'; $ldap_bind_password = ''; ** AUTH_TYPE_BASIC [#jc7c19a4] *** pukiwiki.ini.php 設定 [#l6640102] $auth_type = AUTH_TYPE_BASIC; PHP経由で基本認証(Basic認証)を使用するため、サーバー環境やPHPの動作環境によってはこの機能を利用できません。~ [[CGI版PHPでPukiWikiを動作させた場合>PukiWiki/CGI版PHPで動作させるには]]は、利用できません。PukiWiki を mod_php で動作させる必要があります。~ [[IIS]]でPHPを稼動している場合、サーバーおよびPHPの設定が適切でないと機能しません。また、古いPHPでは一部の環境での制約により利用できない場合があります。~ 制限事項やサーバー側の設定方法などの詳しい情報は、PHP による HTTP 認証(PHP Manual)>http://jp2.php.net/manual/ja/features.http-auth.php を参照してください。 ***ユーザー定義 [#o23a6a7a] ** AUTH_TYPE_EXTERNAL [#p1e27e87] 同じサーバー内の別のPHPスクリプトにリダイレクトします。リダイレクト先のPHPで認証を行い、ユーザー名を設定します。 *** pukiwiki.ini.php 設定 [#z13deb5b] $auth_type = AUTH_TYPE_EXTERNAL; $auth_external_login_url_base = './exlogin.php'; $ldap_user_account = 1; とLDAPサーバーの設定を行うことで、LDAPサーバーからユーザーのFull nameを取得することができます。 ** AUTH_TYPE_EXTERNAL_REMOTE_USER [#b80be182] $auth_type = AUTH_TYPE_EXTERNAL_REMOTE_USER; REMOTE_USER環境変数から、認証済みユーザー名を取得します。Webサーバー側で認証処理を行うなど、PukiWikiサイトすべてが認証管理下にある場合に利用できます。 ** AUTH_TYPE_EXTERNAL_X_FORWARDED_USER [#v272c0f8] pukiwiki.ini.php $auth_type = AUTH_TYPE_EXTERNAL_X_FORWARDED_USER; HTTPリクエストヘッダ X-Forwarded-User から、認証済みユーザー名を取得します。リバースプロキシ環境で、PukiWikiサイトすべてが認証管理下にある場合に利用できます。 ---- **設定方法 [#k1bf1882] pukiwiki.ini.php にて設定します。 ***認証方式 [#gf32c527] 以降で設定する[[正規表現]]マッチを、ページ名に対して行うのか、ページの内容に対して行うのかを設定します。 ///////////////////////////////////////////////// // Authentication method $auth_method_type = 'pagename'; // By Page name //$auth_method_type = 'contents'; // By Page contents - ※1.4.7 現在、両方を同時使用することはできません。 - ※ページ内容を対象に認証を行うのは、負荷を考えるとお勧めできません。 -- 登録した正規表現の数やその設定、そしてページ内容の長さによっては、認証動作が極端に重くなります。 -- 閲覧認証と検索認証を有効にした場合の単語検索では、[[links プラグイン>PukiWiki/1.4/Manual/Plugin/L-N#m5bbd018]] を実行するのとほとんど変わらないぐらいの時間が必要となる場合があります。(最悪、完走せずにエラーとなります) -- 以上の理由から1.4.7 以降は、ページ名を対象に認証する設定が、デフォルトになっています。 ***閲覧認証 [#h9097ef7] ///////////////////////////////////////////////// // Read auth (0:Disable, 1:Enable) $read_auth = 0; $read_auth_pages = array( // Regex Username '#HogeHoge#' => 'hoge', '#(NETABARE|NetaBare)#' => 'foo,bar,hoge', ); $read_auth フラグで、閲覧認証機能を使用するかどうかを設定します。 $read_auth_pages で閲覧認証を要求するページ(閲覧制限するページ)を決定するための[[正規表現]]パターンを設定します。 カンマ区切りで複数ユーザを書いても良い。 ***編集認証 [#gebb06c7] ///////////////////////////////////////////////// // Edit auth (0:Disable, 1:Enable) $edit_auth = 0; $edit_auth_pages = array( // Regex Username '#BarDiary#' => 'bar', '#HogeHoge#' => 'hoge', '#(NETABARE|NetaBare)#' => 'foo,bar,hoge', ); $edit_auth フラグで、編集認証機能を使用するかどうかを設定します。 $edit_auth_pages で編集認証を要求するページ(編集制限するページ)を決定するための[[正規表現]]パターンを設定します。 カンマ区切りで複数ユーザを書いても良い。 ***検索認証 [#je2cda9b] ///////////////////////////////////////////////// // Search auth // 0: Disabled (Search read-prohibited page contents) // 1: Enabled (Search only permitted pages for the user) $search_auth = 0; $search_auth フラグで、検索認証機能を使用するかどうかを設定します。 有効にすると、本文の検索対象を閲覧許可がでているページのみとします。 検索認証は、閲覧認証の設定に依存します。 例えば、閲覧認証が無効で検索認証が有効の場合、閲覧認証はすべてのページを許可するので、検索認証が無効の場合と同じ結果になります。(ただし、認証チェックをしようとする分、検索時間が多少増加します) ---- **設定例 [#m5120c27] ***[[正規表現]]例 [#f5ab2ceb] -全ページに制限をかける。 $edit_auth_pages = array( '##' => 'hoge', ); -ページ Apple に制限をかける。 $edit_auth_pages = array( '#^Apple$#' => 'hoge', ); -ページ Apple と Orange に制限をかける。 $edit_auth_pages = array( '#(^Apple$|^Orange$)#' => 'hoge', ); または $edit_auth_pages = array( '#^Apple$#' => 'hoge', '#^Orange$#' => 'hoge', ); -Comments/ で始まるページに制限をかける。 $edit_auth_pages = array( '#^Comments/#' => 'hoge', ); -/template で終わるページに制限をかける。 $edit_auth_pages = array( '#/template$#' => 'hoge', ); -Comments/ で始まるページ''以外''に制限をかける。 $edit_auth_pages = array( '#^(?!^Comments/)#' => 'hoge', ); -/template で終わるページ''以外''に制限をかける。 $edit_auth_pages = array( '#^(?!^.*/template$)#' => 'hoge', ); ---- **注意事項 [#a3a5638c] + PukiWiki 1.4.7 現在の仕様では、ユーザ A のみがあるページの閲覧を許可されている、かつユーザ B のみがそのページの編集を許可されている場合、ユーザ B は編集時にその内容を見ることができるので、ある意味ページ内容の閲覧を許可されているとも言える状態になります。 **関連 [#c25a2205] - [[正規表現]] - [[Q&A/運営]]: ユーザ認証関連のQ&A - [[dev:PukiWiki/1.4/ちょっと便利に/任意のページごとの閲覧・編集制限]] - [[dev:BugTrack/709]]: パスワードのフォーマットについての詳細 * コメント [#ga5cb65c] #pcomment(Comments/Authentication)