&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の正規表現で除外設定する方法や、 -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が同じとなっていることに注意。