2015年2月5日木曜日

Basic認証またはCookieがあるときだけ閲覧を許可する

Basic認証、Cookieが存在するどちらかの条件がクリアしていればアクセスできるという
ケースが必要になったので調べてみました。

Satisfyの使い方を少し変えることで想定した動作を満たすことができました。
Satisfyはrequireとallowの両方を使われているときに設定するアクセスポリシーですが
requireはBasic認証、allowはCookieが存在するときに設定する環境変数があればの
条件を設定することでいけました。
Satisfy ディレクティブについてはこちらを見て参考にしました。
  1. require valid-user
  2. order deny,allow
  3. deny from all
  4.  
  5. # Cookie
  6. SetEnvIf Cookie "xxxxx=yyyyy" AUTH_ACCESS
  7. allow from env=AUTH_ACCESS
  8.  
  9. # Basic Auth
  10. AuthGroupFile /dev/null
  11. AuthName "Admin only"
  12. AuthType Basic
  13. AuthUserFile /path/to/.htpasswd
  14.  
  15. Satisfy Any