Apache
authentication

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

More than 3 years have 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認証をかける場所とログインできるユーザを紐付けることが出来ます。