Digest認証
Plus! I18N の rev 1167から、Digest認証に対応しています。
ブラウザにおける認証の場合、1度しかユーザIDとパスワードの認証要求がきませんから、認証されているように見えます。これは、ブラウザが毎回、パスワードなどの情報をサーバに送出しているために実現されているもので、Basic認証の場合には、パスワードが丸見えな状態でネットワークを流れることになり、非常に危険な状態です。PHP 5.1 からは、この危険な状態から脱する対応として Digest 認証がサポートされました。
前提条件
まず、Digest認証を利用するための前提条件は以下の通りです。
- Apache のモジュールとして組み込まれた場合に限定 (CGI版では動きません)
- PHP 5.1 以降の Digest認証対応版であること
- 補足事項
- HTTP/1.1 対応ブラウザでのみ利用できる(IE5以降,Mozilla1.0以降...)
- 携帯電話などでは Digest認証は利用できない
設定方法
auth.ini.php
- $adminpass
- 管理者パスワードは、従来通りの形式となります。
passwd プラグインを利用して設定したい場合には、$auth_type の設定を変更する前の
状態で、生成して下さい。
- $auth_type
- まず、Digest 認証を利用するためには、auth.ini.php の $auth_type の設定を変更します。省略時は、Basic 認証となっています。
// Authentication Type
// 1: basic
// 2: digest
$auth_type = 2;
- $realm
- realm(レルム)は、Basic認証の際には、あまり重要ではありませんでしたが、
Digest認証の場合は、重要です。
認証の際に、realm を識別しますから、各サイト毎で設定を変更しておくのもよいでしょう。
/////////////////////////////////////////////////
// Authentication Parameter REALM
$realm = 'PukiWikiAuth';
注意: realm を変更した場合には、全てのパスワードを再生成する必要があります。
auth_users.ini.php
- 暫定サイト管理者IDの作成
- まず、暫定サイト管理者のアカウントを作成します。
- パスワード生成>

暫定サイト管理者として、admin となります。
パスワードに適当な文字列を入力し、CALCボタンを押して、その結果を以下のように
書き換えて下さい。
- 結果(例)
{x-digest-md5}5b7c1cce95b04ac24e8d4537673afa22
- 書き換え(例)
<?php
$auth_users = array(
'admin' => array('{x-digest-md5}5b7c1cce95b04ac24e8d4537673afa22',2),
);
- もっと簡単な方法
- init/passwd.ini.php というファイルを、以下のように作れば、passwd プラグインから、
auth_users.ini.php ファイルへ書き込みできるようにすることも可能です。
<?php
define('USE_PKWK_WRITE_FUNC', TRUE);
?>
暫定管理者でログイン
適当なページに
#login
と、login プラグインを設置して下さい。
そして、admin でログインして下さい。
この状態で、passwd プラグインを呼び出せば、他のユーザIDのパスワードも
生成可能になります。
- 設定が終了したら、暫定サイト管理者IDは、忘れずに削除するようにお願いします。
注意:削除機能は実装されていません。手動での削除となります。
プラグイン
passwd プラグイン
JavaScript を利用して生成しますから、パスワードの平文がネットワークを流れる心配はありません。また、サイト管理者権限の場合、他のユーザIDの生成や役割の設定ができるようになっています。
サイト管理者未満の認証者の場合には、自分のパスワード変更ができるようになっています。
htdigest プラグイン
Apache を利用した認証を行う場合には、htdigest プラグインを利用すると便利です。