通常、レンタルサーバ等では管理画面よりBasic認証に必要なためのファイルを作ることが出来ますが
Basic認証よりセキュアなDigest認証を公式にサポートしていないサーバが多いと思います。
然しSSHがない環境でも、phpでDigest認証のパスワードを作ることが出来ます。
Digest認証については、Basic認証よりセキュアなDigest認証を使う方法を参照のこと。
下記PHPは取扱に注意すること。
# /path/to/htdigest.php
#!/usr/bin/php
<?php
/*
* This script is create Digest Authentication files.
*/
// ".htdigest"'s path
$path = "/path/to/.htdigest";
// Common realms
$realm = array(
0 => "This contents can join at Administrators only.",
1 => "Members only.",
);
// Login users setting
$users = array(
0=>array(
"name" => "admin",
"realm" => $realm[0],
"password" => "adminpassword",
),
1=>array(
"name" => "member",
"realm" => $realm[1],
"password" => "memberpassword",
),
);
// Create Crypted password
foreach ($users as $val)
{
$put[] = sprintf('%s:%s:%s',$val["name"],$val["realm"],md5(sprintf('%s:%s:%s',$val["name"],$val["realm"],$val["password"])));
}
// Create .htdigest
$fp = @fopen($path,"w");
@($fp,implode("\n",$put)."\n");
@fclose($fp);
.htaccessによる認証の分け方+Digest認証の設定方法
# Administrator's contents
<Location "/members/admin">
AuthType Digest
AuthName "This contents can join at Administrators only."
AuthUserFile /path/to/.htdigest
Require valid-user
</Location>
# Members's contents
<Location "/members/public">
AuthType Digest
AuthName "Members only."
AuthUserFile /path/to/.htdigest
Require valid-user
</Location>


コメント