- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-02-25T02:40:14+09:00","","")
#author("2018-12-04T01:27:57+09:00","","")
*ユーザー認証 [#ba52fee9]
ユーザー認証機能を利用することで、ページの閲覧制限、編集制限、検索制限をすることができます。
デフォルトではPHP Sessionを利用し、PHP5.1以降で動作させる必要があります。PHP5.0以前の環境で動作させる必要がある場合はBasic認証を利用してください。
ユーザーアカウント(ユーザー名とパスワードの組み合わせ)管理の方法は、3種類あります。
- PukiWiki内定義(pukiwiki.ini.phpでユーザーを定義)
- LDAPサーバーで管理
- 外部システムで管理
認証情報の入力方法(auth_type)として3種類の方法があります
認証情報の入力方法(auth_type)として4種類の方法があります
- Form認証: PukiWiki内のHTML formを利用
- Basic認証: Webブラウザの機能を利用したHTTP認証
- SAML認証: SAML連携で外部IdP(認証サーバー)で認証した結果をPukiWikiで利用する
- 外部認証: PukiWiki外で認証した結果をPukiWikiで利用する
利用可能な組み合わせは限定されており、以下のようになります。
|auth_type|入力方法 |アカウント管理 |Session利用|解説|h
|AUTH_TYPE_FORM|Form認証 |PukiWiki内定義 |利用する |このページ|
|AUTH_TYPE_FORM(LDAP)|Form認証 |LDAP |利用する |[[./LDAP]]|
|AUTH_TYPE_BASIC|Basic認証 |PukiWiki内定義 |利用しない |[[./BasicAuth]]|
|AUTH_TYPE_SAML|SAML認証 |SAML IdP定義 |利用する |[[./SAML]]|
|AUTH_TYPE_EXTERNAL|外部認証 |外部システム |利用する |[[./ExternalAuth]]|
|AUTH_TYPE_EXTERNAL_REMOTE_USER|外部認証 |外部システム |利用しない |[[./ExternalRemoteUser]]|
|AUTH_TYPE_EXTERNAL_X_FORWARDED_USER|外部認証 |外部システム |利用しない |[[./ExternalXForwardedUser]]|
#contents
----
このページでは PukiWiki内ユーザー定義 - Form 認証 の設定を説明します。
**設定方法 [#k1bf1882]
pukiwiki.ini.php にて設定します。
***認証方式 [#gf32c527]
以降で設定する[[正規表現]]マッチを、ページ名に対して行うのか、ページの内容に対して行うのかを設定します。
/////////////////////////////////////////////////
// Authentication method
$auth_method_type = 'pagename'; // By Page name
//$auth_method_type = 'contents'; // By Page contents
- ※1.5.1 現在、両方を同時使用することはできません。
- ※ページ内容を対象に認証を行うのは、負荷を考えるとお勧めできません。
-- 登録した正規表現の数やその設定、そしてページ内容の長さによっては、認証動作が極端に重くなります。
-- 閲覧認証と検索認証を有効にした場合の単語検索では、[[links プラグイン>PukiWiki/1.4/Manual/Plugin/L-N#m5bbd018]] を実行するのとほとんど変わらないぐらいの時間が必要となる場合があります。(最悪、完走せずにエラーとなります)
-- 以上の理由から1.4.7 以降は、ページ名を対象に認証する設定が、デフォルトになっています。
***ユーザー定義 [#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)が他者に覗かれるような事態の可能性を考えると、暗号化したパスワードをタイプしておくほうが安心です。
***閲覧認証 [#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.5.1 現在の仕様では、ユーザ A のみがあるページの閲覧を許可されている、かつユーザ B のみがそのページの編集を許可されている場合、ユーザ B は編集時にその内容を見ることができるので、ある意味ページ内容の閲覧を許可されているとも言える状態になります。
**関連 [#c25a2205]
- [[正規表現]]
- [[Q&A/運営]]: ユーザ認証関連のQ&A
- [[dev:PukiWiki/1.4/ちょっと便利に/任意のページごとの閲覧・編集制限]]
- [[dev:BugTrack/709]]: パスワードのフォーマットについての詳細