如何根据应用程序身份验证逻辑限制代理应用程序

如何根据应用程序身份验证逻辑限制代理应用程序

我有一个带有 mod 代理的 vhost,可以很好地重定向,但我想添加到它。

这是我的虚拟主机:

<VirtualHost *:80>

    ServerName www.domaine.local

    ProxyRequests Off
    ProxyPreserveHost On

    ProxyPass /subsonic/ http://serv2.domaine.local/subsonic/
    ProxyPassReverse /subsonic/ http://serv2.domaine.local/subsonic/

    ProxyPass /owncloud/ http://serv3.domaine.local/owncloud/
    ProxyPassReverse /owncloud/ http://serv3.domaine.local/owncloud/

    ProxyPass / http://serv1.domaine.local/
    ProxyPassReverse / http://serv1.domaine.local/

</VirtualHost>

在 serv1 中,我有自己的 php/mysql/ldap 应用程序,用于验证我的用户。我的规则之一是:1 个用户可以访问 0、1 或 N 个应用程序。

因此我想要的是例如:

  • 未经身份验证的用户只能拥有反向代理虚拟主机的这一部分:

    ProxyPass / http://serv1.domaine.local/                              
    ProxyPassReverse / http://serv1.domaine.local/
    
  • 只允许访问一个应用程序(“subsonic”)的用户可以访问:

    ProxyPass / http://serv1.domaine.local/                              
    ProxyPassReverse / http://serv1.domaine.local/
    

    ProxyPass /subsonic/ http://serv2.domaine.local/subsonic/
    ProxyPassReverse /subsonic/ http://serv2.domaine.local/subsonic/
    
  • “全部访问”用户可以访问所有定义的代理

我不知道该怎么做,也许我可以$_SESSION['authtothisapp'] = true ;在我的 php 应用程序中放置一个变量,但是如何告诉 apacheif $_SESSION['authtothisapp'] = true然后允许访问给定的代理应用程序?

答案1

在全局代理级别上,我已经使用会话 cookie 完成了此操作,如下所示:

<Proxy *>
  Order deny,allow
  Deny from all
  SetEnvIf Cookie "authtoken=myCookie" let_me_in
  Allow from env=let_me_in
</Proxy>

您可能能够使用代理配置中的显式 URL 根据 cookie 限制对各个目录的访问,如下所示:

 <Proxy http://example.com/foo/*>

但我个人尚未测试过该选项。

相关内容