はじめに
これは何?
たまーにクローズドなキャンペーン用に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にロードさせます。
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認証をかける場所とログインできるユーザを紐付けることが出来ます。