带有 PHP 登录页面的 Apache2 反向代理(在转发到服务器之前检查会话变量)



我有一个 apache2 反向代理设置,适用于 ssl 后端服务器。

(WWW -->Apache2 --> 服务器) 工作正常。

我有一个很好的方法来使用 TOTP 进行 2FA,并希望让它适用于这个特定的 Web 应用程序。

如何让 apache2 在将用户转发到代理后面的服务器之前检查会话 id/var(检查用户是否使用我的 php 脚本进行身份验证)?

IE:我正在寻找这个。

  1. 用户连接到代理并显示登录表单。
  2. 用户通过会话身份验证($_SESSION['loggedin'] = "1")
  3. Apache 检查是否 = 1,如果是,则转发到代理主机。如果没有,请提供登录名.php(作为示例)

从本质上讲,我试图实现的是一个 2factor 机甲,因为代理的应用程序允许一种类型,而我使用 totp 的 php 脚本允许另一种类型。

我只需要apache top能够在转发到代理主机之前检查它们是否已在php中登录。

反向代理目前工作正常,只需要这个额外的"登录"才能被代理工作。

当前的配置基本上是这样的。

<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://10.0.0.1:80/
ProxyPassReverse / http://10.0.0.1:80/

最好在虚拟主机中有一些东西说,如果用户会话 var x = Y,那么代理。

有什么想法吗?

我在网上找不到任何东西。

嘿,自称"聪明"的格雷厄姆·

第一。在IT领域,没有不可能。

我想完全实现您想要的。 到目前为止,我已经使用BasicAuth来解决这个问题。

要解决您的 Apache 身份验证问题,您必须使用 Location 指令。

对于基本身份验证,这看起来像

<VirtualHost *:80>
ServerName myproxyservice.mydomain.de
ServerAdmin webmaster@mydomain.de
<Location />
AuthType Basic
AuthName "Restricted area"
AuthUserFile /var/www/html/myproxyservice/.htpasswd
Require valid-user
</Location>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:32400/
ProxyPassReverse / http://127.0.0.1:32400/
</VirtualHost>

但是现在。我想要一个更好的登录表单。 这可以通过Apache模块实现。

mod_session

mod_auth_form"这里有简单的例子,所以我没有必要做一个">

亲爱的 Linux 用户。您必须激活以下模块:

A2enmod session_cookie

a2enmod 请求

A2enmod auth_form


MfG R0b1ns -'Ich hab auch Discord :)

最新更新