2015年2月5日木曜日

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

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

Satisfyの使い方を少し変えることで想定した動作を満たすことができました。
Satisfyはrequireとallowの両方を使われているときに設定するアクセスポリシーですが
requireはBasic認証、allowはCookieが存在するときに設定する環境変数があればの
条件を設定することでいけました。
Satisfy ディレクティブについてはこちらを見て参考にしました。
require valid-user
order deny,allow
deny from all

# Cookie
SetEnvIf Cookie "xxxxx=yyyyy" AUTH_ACCESS
allow from env=AUTH_ACCESS

# Basic Auth
AuthGroupFile /dev/null
AuthName "Admin only"
AuthType Basic
AuthUserFile /path/to/.htpasswd

Satisfy Any