Top > Documents > How to use Digest Authentication

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);
?>
  • ただし、この場合でも、役割の付与は自動で行えません。 役割についての詳細は、役割と機能制限を参照下さい。
    <?php
    $auth_users = array(
            'admin' => array('{x-digest-md5}5b7c1cce95b04ac24e8d4537673afa22',2),
    );
    2の箇所は、各自編集して追加下さい。1人目のサイト管理者のみ手動での登録が必要となります。

暫定管理者でログイン

適当なページに

#login

と、login プラグインを設置して下さい。

そして、admin でログインして下さい。 この状態で、passwd プラグインを呼び出せば、他のユーザIDのパスワードも 生成可能になります。

  • 設定が終了したら、暫定サイト管理者IDは、忘れずに削除するようにお願いします。
    注意:削除機能は実装されていません。手動での削除となります。

プラグイン

passwd プラグイン

JavaScript を利用して生成しますから、パスワードの平文がネットワークを流れる心配はありません。また、サイト管理者権限の場合、他のユーザIDの生成や役割の設定ができるようになっています。

サイト管理者未満の認証者の場合には、自分のパスワード変更ができるようになっています。

htdigest プラグイン

Apache を利用した認証を行う場合には、htdigest プラグインを利用すると便利です。


Reload   New Lower page making Edit Unfreeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: (1321d)