web-dev-qa-db-ja.com

ApacheでのCookie認証

Apacheでリバースプロキシを設定しようとしています。ユーザーはログインする必要があり、その後Cookieが送信されます。 ApacheにCookieをチェックしてもらいたい。これを行う方法はありますか?

EG、今のところ私の設定は次のようになっています:

<VirtualHost *:82>
  # username:password sent on to endpoint
  RequestHeader set Authorization "Basic cm9vdjfjDJaGRvYa=="

  ProxyPass /monitors/2/ http://192.168.1.6/foo.cgi
  ProxyPassReverse /monitors/2/ http://192.168.1.6/foo.cgi
</VirtualHost>

Cookieに基づいてアクセスを制限するためにVirtualHostに何かを追加できますか?

4
user19084

承知しました。私も同じことをします。

ユーザーがログインしたら、Cookieを渡して/t/tokenidにトークンを作成し、Cookieに入れます:S=tokenid;PATH=/

次に、RewriteCondを使用してファイルの存在を確認できます。

RewriteEngine on
# check for no cookie being set
RewriteCond %{HTTP:Cookie} !S=([a-zA-Z0-9]+)
RewriteRule ^/*protected/ /login.html [L,R]
# check for an invalid cookie being set
RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+)
RewriteCond /t/%1 !-f
RewriteRule ^/*protected/ /login.html [L,R]

最後に、ガベージコレクターが定期的に実行され、古いトークンが削除されます。

find /t -type f \! -atime +1 -delete

Atimeを自動的に更新するために、noatimeなしで/tをマウントし、Webアクセス可能(ただしインデックス付けされていない)にし、スタイルシートの一部が/loggedin.txtとして書き換えられます。 :

RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+)
RewriteRule ^/*loggedin\.txt$ /t/%1 [L]
4
geocar