Linux Tips

Apacheでユーザー認証を行うには(Digest認証編)

北浦訓行
2005/2/10

 Apacheのユーザー認証には、「Basic認証」と「Digest認証」がある。Basic認証は一般的に行われている方法だが、パスワードが暗号化されないため、機密性の高いデータへの認証には適していない。Digest認証はパスワードが暗号化されるが、これに対応しているのは比較的最近のWebブラウザに限られる。

 ここではDigest認証を利用して、特定ディレクトリのWebページを開く際に「secret」というユーザー名でアクセスできるようにする(編注)。Basic認証を使う方法については、Apacheでユーザー認証を行うには(Basic認証編)を参照。

編注:以下のコマンド名やディレクトリはディストリビューションによって異なることに注意。

 まず、ユーザー認証によるアクセス制限をかけるディレクトリを作成する。ここでは、/var/www/html/memberとする。

# mkdir -p /var/www/html/member

 次に、Apacheの設定ファイル(/etc/httpd/conf/httpd.conf)に以下の設定を追加する。

<Directory "/var/www/html/member">
    AuthType Digest
    AuthName "Secret Zone"
    AuthDigestDomain /member/
    AuthDigestFile /etc/httpd/.htdigest
    Require user secret
</Directory>

 そして、htdigestコマンドでsecretというユーザーを作成し、パスワードを設定する。パスワードの設定に必要なパスワードファイルは、ここでは/etc/httpdディレクトリ(編注)に.htdigestとして作成する。。

編注:パスワードファイルの作成場所は必ずしも/etc/httpdである必要はない。ただし、外部からアクセスできる場所(Apacheのドキュメントルート内など)は避けるべきである。

 htdigestコマンドの書式は以下のとおり。レルムには、/etc/httpd/conf/httpd.confの「AuthName」に指定した文字列を入れる。なお、初めて.htdigestファイルを作成するときは-cオプションが必要となる。

htdigest [-c] パスワードファイル レルム ユーザー名

 実行結果は以下のようになる。

# htdigest -c /etc/httpd/.htdigest 'Secret Zone' secret
Adding password for secret in realm Secret Zone.
New password:
Re-type new password:

 以上で設定は完了だ。以下のコマンドを実行して、Apacheを再起動する。

# service httpd restart

 Webブラウザでhttp://localhost/member/にアクセスすると、ユーザー認証用のダイアログボックスが表示される。

ユーザー認証用のダイアログボックスが表示されたFirefoxの画面

Linux Tips Index



 Linux Squareフォーラム Linux Tipsカテゴリ別インデックス
インストール/RPM ブート/ブートローダ
ファイル操作 環境設定
ユーザー管理 コンソール/ターミナル
X Window System セキュリティ
トラブルシューティング 他OS関係
ネットワーク ハードウェア
Webサーバ Samba
GNOME KDE
OpenOffice.org エミュレータ
ソフトウェア そのほか/FAQ
全Tips公開順インデックス Linux Tips月間ランキング
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間