さくらでBasic認証がエラーになる場合

さくらのレンタルサーバーでBasic認証を行う場合、他のレンタルサーバーの設定だと、エラーになるかもしれません。その場合は、以下の様な点を見なおしてください。

さくらでBasic認証がエラーになる場合

 

Last update 2016-09-25 16:04

twitter Facebook はてブ LINE pocet

 

他のレンタルサーバーを使っていて、さくらのレンタルサーバーに移行した時に、Basic認証がエラーになる場合があります。
また、Basic認証をさせたいページ(PHPなど)が500番エラーになる場合があります。
その場合の修正と見直すべきポイントを紹介します。
最後に、パスワード認証用のIDとパスワードを記述する「.htpasswd」の作成方法を紹介します。

Sponsored Link

 

PHPでBasic認証をさせたい場合

PHPなどで、

if (empty($_SERVER["PHP_AUTH_USER"]) || empty($_SERVER["PHP_AUTH_PW"])
 || $_SERVER["PHP_AUTH_USER"] != $User
 || $_SERVER["PHP_AUTH_PW"] != $Pw){
  header('WWW-authenticate: basic realm="' . $realm . '"');
  header("HTTP/1.0 401 Unauthorized");
  exit();
}

のようなPHPだけで「Basic認証」を実現したい時があるかと思います。
ところがさくらのレンタルサーバーだと、PHPがCGIとして動作するため、うまく動作しません。
原因は、$_SERVER["PHP_AUTH_USER"] と $_SERVER["PHP_AUTH_PW"]の値がデフォルトだと取得できないためです。(正しいパスワードを入力しても、永久に認証画面がでてしまう)

これを解決するには、「.htaccess」に以下の3行を追加してやります。

RewriteEngine  On
RewriteCond     %{HTTP:Authorization} ^(.*)
RewriteRule     ^(.*) - [E=HTTP_AUTHORIZATION:%1]

当然のことながら、「.htaccess」は、認証を行いたいPHPページと同じかそれより上のディレクトリに設置します。

認証ページが500エラーになってしまう

今度は「.htaccess」で「Basic認証」を行おうとすると、500番エラーになってしまう時があります。
これは「.htaccess」のユーザー名とパスワードが記述されている「.htpasswd」へのパスが間違っているのが原因です。
サイトの公開ファイルが有る場所は、「/home/ユーザーID/www/ 」になります。
なので、「AuthUserFile」の設定は、

AuthUserFile /home/ユーザーID/www/.htpasswd

のような記述になります。

自分で.htpasswdを作りたい

もし、自分で「.htpasswd」を作成したり、パスワードを暗号化したい場合は、PHPで以下のようなページを作成します。

<?php
print crypt("好きなパスワードを入れる" , "12");
?>

"12" には、好きな半角英数字2文字を入れてください。(例では「12」)
このPHPページにアクセスすると、暗号化されたパスワードが表示されるので、「.htpasswd」を作成し、

ユーザー名:暗号化されたパスワード

といった形式で記述して保存すればOK。
例えば

user001:xxxxxxxxx

のような感じ。

関連ページ

最終更新日 2016-09-25 16:04

 

twitter Facebook はてブ LINE pocet

Sponsord Link

 

 

投稿日:2013-12-05 | このページのトップへ | コメントを書く | 管理