More than 1 year has passed since last update.

はじめに

これは何?

たまーにクローズドなキャンペーン用に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

http://store.hoge.com/seacret_sale/

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

補足

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

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

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.