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


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

セキュリティー維持の為にも、サイトに基本認証をかけて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
*********************************

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(海外サーバー)が何か特殊な設定をしている様です。

 

 

カンパをお願いしますm(_)m

ノウハウツリーでは、編集部が自腹で取材を行っています。

もし、この記事がお役に立ちましたら、少しでも結構ですのでビットコインでカンパを頂けると励みになります!

1LaSkgFHxX59FZYidYBpHa9GL8pHmzfSiR

 

 

 

 

 

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


コメントを残す

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

CAPTCHA