AC-5

某SEの雑記帳

.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を再起動すれば設定は完了となります。

 - Linux