Help us understand the problem. What is going on with this article?

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

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

nntsugu
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした