.htaccessを使わずにApacheでBasic認証をかける
2016/01/20
Basic認証をかける方法は.htaccessを利用して行うのが一般的でお手軽ですが、
なんとなく.htaccess以外の方法で設定できないかと思って、Apacheの設定ファイルで設定してみました。
Basic認証をかけるディレクトリ:/var/www/html/test
htpasswdコマンドでauthuserというユーザを作成し、パスワードを設定します。
ユーザとパスワードの組み合わせを記述するファイルは、
/etc/httpd/conf内に、.htpasswdとして作成します。
.htpasswdの作成場所は特に決まっていませんが、外部からアクセスできるApacheのドキュメントルート内などは避けてください。
[root@test]# htpasswd -c -b /etc/httpd/conf/.htpasswd authuser←htpasswdファイルを初めて作成する時は-cオプションが必要となる -bでパスワードも同時に作成できる
Adding password for user authuser
次に、一般的に.htaccessに記載している内容をApacheの設定ファイルに記述する。
ただし、Apacheの設定ファイル(/etc/httpd/conf/httpc.conf)直に書くのではなく、/etc/httpd/conf.d/以下に別ファイルとして作成する。
[root@test]# vi /etc/httpd/conf.d/htpass.conf←htpass.confというファイルを作成する
<Directory "/var/www/html/test">
AuthUserFile /etc/httpd/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "Basic Auth"
AuthType Basic
Require valid-user
</Directory>
この時に後で分かりやすいように等の理由で、confファイルにコメントを残したりする場合、日本語は利用してはいけません。
日本語を利用するとなぜかパスワードが通らなかったりとハマることがあります。
以上でApacheを再起動すれば設定は完了となります。