LoginSignup
22
27

More than 5 years have passed since last update.

忘れがちなDigest認証設定話 Apacheの場合

Last updated at Posted at 2014-12-16

はじめに

これは何?

たまーにクローズドなキャンペーン用にDigest認証がほしくなることあるよねー。
でも毎度忘れちゃうのでメモ。

今回はApacheでやります。

当記事でやりたいこと

http://store.hoge.com/seacret_sale/
にID/Password認証をかけたい。
特定のお得意様向けシークレットセールってやつですね。

  • Target URL    : http://store.hoge.com/seacret_sale/
  • Real path     : ${PATH TO DocumentRoot}/seacret_sale/
  • Campain name   : 'only invited members'
  • Target user name : goodcustomer, salespartner
  • Password     : goodcustomer : hogehoge,   salespartner : fugafuga

準備作業

Apacheの設定

モジュールのロード

今回Digest認証を利用するために使うモジュールをApacheにロードさせます。

httpd.conf
LoadModule auth_digest_module   modules/mod_auth_digest.so
LoadModule authn_file_module    modules/mod_authn_file.so
LoadModule authz_user_module    modules/mod_authz_user.so 

Digest認証で制御する対象のディレクトリ設定

FollowSymlinksオプションを有効化してあげます

httpd.conf or conf.d/hoge.conf

//Require 'FollowSymLinks' option on Directory directive in httpd.conf or conf.d/*.conf

<Directory "/path/to/documentroot/seacret_sale">
        Options           FollowSymLinks
        AllowOverride     All
        Order             allow,deny
        Allow             from        all
        <LimitExcept POST GET>
                 Order         deny,allow
                 Deny         from all
       </LimitExcept>
</Directory>

設定のvalidation

下記をチェックしたおかしなところがあれば直しましょう

${PATH TO APACHE}/bin/httpd -M
// ロードされているモジュールを確認しましょう

${PATH TO APACHE}/bin/httpd -t
// 設定ファイルにSyntacs errorがないか確認しましょう

${PATH TO APACHE}/bin/httpd -S
// 意図した通りの設定になっているかを確認しましょう

設定の適用

gracefulでOK

${PATH TO APACHE}/bin/apatchctl graceful

secret_saleディレクトリへのアクセス制御設定をしよう

Digest認証情報を管理するための共用ユーザを作っておくと便利です。
今回は

storemanager

ユーザを共用ユーザとして用意しました。

1. Add user in ~/.digestpass

/home/storemanager/.digestpass

に認証情報を登録します。

htdigestコマンドを使います。
初回は~/.digestpassファイルを作るために -c オプションをつけてね
こんな感じ↓
${PATH TO APACHE}/bin/htdigest ~/.digestpass 'only invited members' goodcustomer

  • goodcustomer
storemanager $ ${PATH TO APACHE}/bin/htdigest ~/.digestpass 'only invited members' goodcustomer
New password: hogehoge
Re-type new password: hogehoge

  • salespartner
storemanager $ ${PATH TO APACHE}/bin/htdigest ~/.digestpass 'only invited members' salespartner
New password: fugafuga
Re-type new password: fugafuga
cat ~/.digestpass

で中身を確認してみてね

2. Create target directory(If you need)

mkdir ${PATH TO DocumentRoot}/seacret_sale

3. Create .htaccess

.htaccessで制御します。

${PATH TO DocumentRoot}/seacret_sale/.htaccess

AuthType Digest
AuthName "only invited members"

AuthDigestProvider file
AuthUserFile  /home/storemanager/.digestpass
Require user goodcustomer salespartner

4.Check

ダイアログがポップアップされ、"1.Add user in ~/.digestpass"で登録した
ID/PasswordでアクセスできればOK

補足

ちょいちょい出てくる"only invited members"
これはrealmと言いいます。日本語訳すると「領域」とか「範囲」。

.digestpassと、.htaccessのAuthName
こいつらに同じrealmが指定してやることで、Digest認証をかける場所とログインできるユーザを紐付けることが出来ます。

22
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
27