&tag(Apache/認証);
*目次 [#k7f77836]
#contents
*関連ページ [#q06cb399]
*参考情報 [#hc070737]


*Tips [#x38425cb]
**サブディレクトリで異なるパスワードを使う [#j16f8e0f]
-Basic認証 or Digest認証で、親フォルダと異なるユーザー名で認証させたい場合がある。
-例えば/usersを一般ユーザー向けのパスワードで認証し、/users/adminを管理者ユーザーのパスワードで認証したい場合。
-普通に考えて、LocationやDirectoryなどで/usrs/adminに対してさらに認証設定を行えば良さそうだが、そのままだとパスワードプロンプトが2回表示されてしまうことがある(表示されない場合もある?)。
-これを回避する方法として、[[サブディレクトリで異なるユーザでBasic認証、Digest認証をかける - 発声練習:http://d.hatena.ne.jp/next49/20150203/p1]]にあるように、マージ優先度の違いを利用し、上位ディレクトリをDirectoryで、サブディレクトリをLocationで設定する方法がある。ただしこれではmod_proxyを使っていてLocationやLocationMatchしか使いたい場合に対応できない。
-SetEnvIf([[apache - Allow main domain and disallow subfolders access via .htaccess - Stack Overflow:http://stackoverflow.com/questions/28674567/allow-main-domain-and-disallow-subfolders-access-via-htaccess]])や、LocationMatchの正規表現で除外設定する方法([[authentication - How to accomplish "AuthType None" in Apache 2.2 - Stack Overflow:http://stackoverflow.com/questions/2641646/how-to-accomplish-authtype-none-in-apache-2-2/3560064#3560064]])がありそうだが直感的ではない。
-ということで、上位ディレクトリと下位ディレクトリで同じ認証ファイルを使い、管理者のユーザー名、パスワードをそれに含める方法がよさそう。[[security - Protected Apache web sub-directory asks for password twice - Server Fault:http://serverfault.com/questions/69048/protected-apache-web-sub-directory-asks-for-password-twice]]
-例えば以下のように設定する。
#pre{{
Alias /test /home/www/public_html/test
<Location /test>
  AuthUserFile /home/www/htpasswd
  AuthType Basic
  AuthName "user auth"
  Require valid-user
</Location>

<Location /test/admin>
  AuthUserFile /home/www/htpasswd
  AuthType Basic
  AuthName "user auth"
  Require user testadmin
</Location>
}}
-htpasswdには、testuser、testadminを登録しておく。
-/testには認証されたユーザーならだれでもアクセスできるのに対し、/test/adminにはtestadminだけがアクセスできる。
-AuthNameが同じ領域は同じ認証が行われるので、AuthNameが同じとなっていることに注意。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS