基本認証(ベーシック認証)を設定する方法


基本認証を使えば、簡単にアクセス制限を掛ける事ができる

セキュリティー維持の為にも、サイトに基本認証をかけてID/PASSを知らない人にはアクセスをさせない様にします。

まだ、開発中のサービスなどは外部に公開をしたくないといった事があると思います。そういう場合に重宝されるでしょう。

基本認証(ベーシック認証)を設定する方法

 

1.基本認証を掛けたいディレクトリに移動します。

cd /home/hoge_user/www/hoge_dir

2..htaccessファイルを作成します。

AuthType Basic
AuthName “Enter Your ID and PASS”
AuthUserFile /home/hoge_user/www/app_test/.htpasswd
require valid-user

**************追記**************
WordPressの仕様上、「AuthName」のダブルクォーテーションが全角になっていますが、使用するときは半角のダブルクォーテーションに書き換えてください!
もしこれまでこれを見ていただいてコピペ等して、ハマってしまった方がいましたら、すみません!!m(_ _)m
*********************************

AuthName には、基本認証ダイアログが起動した時に入力を促すメッセージを入れます。

日本語の場合には文字化けしてしまいます。

英語でメッセージを入れると良いでしょう。

 

3..htpasswdファイルを作成します。

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

基本認証で設定するパスワードは以下の様なサイトを

使って作成すると便利です。

.htaccess による認証用 パスワード暗号化ツール

http://www.luft.co.jp/cgi/htpasswd.php
すぐに使いこなせる Linux超入門 (日経BPパソコンベストムック)
本来は、ユーザ作成、パスワード作成をCUI上でコマンド発行で行います。

 

.htpasswdファイルには

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

という形式になります。

★捕捉★
.htaccess
.htpasswd
のファイルはWindows環境では作成が出来ません。Windows環境ではファイル名の頭が「.」(ピリオド)から始まるファイルを作成出来ない為です。よってローカルのWindows環境では
test_1.htaccess
test_2.htpasswd
という風に名前を仮置きし編集を行いWinSCPでサーバにアップロードします。その後、サーバ上でリネーム
test_1.htaccess  → .htaccess
test_2.htpasswd → .htpasswd

した方が手っ取り早いです。viを使ってTeraTerm上から変更も出来ますがやはり面倒ですしね。

基本認証ダイアログが起動後にユーザ名・パスワード入力をした時にエラーが出る場合の対処方法

海外サーバー(hostmonster)で運営中のあるサイトに基本認証を掛けてみました。

.htaccess

.htpasswd

両ファイルとも設定値・設定方法ともに合っているはずなのに、なぜか基本認証のダイアログ起動後に、ユーザ名・パスワードを入力すると

Internal Server Error

というエラーが出るという事象にドはまりしました。

かなりはまったのでメモしておきたいと思います。

基本認証でInternal Server Errorが出た原因

原因は、.htaccessファイルの中で.htpasswdファイルのパスを指定しますが、そのパスの指定をミスっていました。

私の場合、契約したhostmonsterの設定が特殊で

ドメインを割り当てているパスがWinSCP上で見ると

/public_htmlになっていました。

/public_html/.htaccess

/public_html/.htpasswd

 

この様に2ファイルを配置したのですが、.htaccessファイルの中で.htpasswdファイルのパスを

AuthUserFile /public_html/.htpasswd

と記載していたのですが、このパスの指定が間違っていた訳です。

 

DOCUMENT_ROOT/public_html/.htpasswdと指定し直したところ正常に基本認証が動作する様になりました。

AuthUserFile {DOCUMENT_ROOT}/public_html/.htpasswd

DOCUMENT_ROOTの確認方法

基本認証をかけるパスに

test.phpとスクリプトファイルを作成します。

そして、以下コードを記述します。

<?php

phpinfo();

?>

ブラウザからアクセスすると

Environment

の中に

DOCUMENT_ROOTのパスが表示されている事が確認出来ます。

WinSCPで開いた時には

/home/{user_name}

までのパスが省略して表示されていました。

この省略されたパスを使って、.htpasswdファイルへのパスを.htaccessの中で指定していた事がInternal Server Errorの原因でした。

パスワードファイルを指定する場合には、には、phpinfoでドキュメントルートのパスをしっかりと確認して指定する様にしましょう。

さくらインターネットでは、WinSCP上でも正しいパスが表示されます。

hostmonster(海外サーバー)が何か特殊な設定をしている様です。

 

 

■他の人はこちらも見ています。■


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA