.htaccessによるユーザー認証

httpd.confに次の記述があるかを確認しましょう。

# 次の2行でベーシック認証を有効にします。
# Win版Apacheでは「LoadModule auth_module」は必要ないと思います。
LoadModule auth_module
AddModule mod_auth.c

# ディレクトリはDocumentRootか、ユーザーディレクトリですね。
<Directory /home/httpd/html>
    # AuthConfigを指定すると.htaccessで認証定義できるようになります。
    # これ以外のオプションを同時に指定してもいいです。
    # PHPを使うならOptionsも設定したほうが、いいかもしれません。
    AllowOverride AuthConfig
</Directory>

# 「.ht*」というファイルを直接ブラウザで開けないようにさせるため、
# 以下の設定があったほうがいいです。(初期値で、たぶん設定済みですが確認してください)
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

htpasswdがあるかを確認

ユーザーIDやパスワードを保存しておくファイルのメンテナンス・プログラム「htpasswd」があるかを確認してください。

Apacheが使えるならhtpasswdはあるはずですが、一部のレンタル・サーバーなど、htpasswdを起動できない環境もあります。 どうしてもhtpasswdが使えないようなら、Windows版のApahceをインストールして、そのhtpasswdを使ってもパスワード管理はできます。


.htaccessの準備

ユーザー認証したいディレクトリに次のような「.htaccess」という名前のファイルをおきます。

# .htpasswdを設置するディレクトリは任意に決めてください。
# Webで公開しているディレクトリ以外を指定するのがお勧めです。
AuthUserFile /home/USER/.htpasswd

AuthName "Page Title"
AuthType Basic
require valid-user

パスワード・ファイルの作成とメンテナンス

最初に「.htpasswd」を作るときだけ-cオプションを付けてhtpasswdを起動します。
htpasswd -c .htpasswd USERNAME

これで2度パスワードを聞いてきますので、パスワードを入力してください。
2人目以降は-cオプションを付けずに行います。
htpasswd .htpasswd USERNAME2

パスワードをコマンドラインに直接指定する場合は-bオプションを付けます。
htpasswd -b .htpasswd USERNAME3 PASSWORD

これで準備完了です。ブラウザでユーザー認証を準備したページを開いてみてください。パスワードが聞かれ、作成したユーザーではログインできるなら設定は成功です。

後は、htpasswdを使ってユーザーのメンテナンスをやっていけばいいですね。 パスワードを変更するときは、htpasswdを使えば以前に登録済みのユーザーでは、パスワードが書き換わります。

ユーザーの削除は「.htpasswd」をエディタで開いて、削除するユーザーの行を消せばユーザー自体を削除できます。

なお、ここでは「.htpasswd」というファイル名を使いましたが、ファイル名は.htaccessの記述に合わせれば何でもいいです。

注意として、この.htpasswdはhttpやftpなどで公開されたディレクトリ配下には設置しないでください。これをしてしまうとセキュリティ上好ましくないです。

タイトルとURLをコピーしました