具有身份验证表单的Apache反向代理未将凭据传递到代理服务器

时间:2018-09-10 08:48:32

标签: apache forms-authentication reverse-proxy

我正在开发一个反向代理解决方案(CentOS 7 + Apache w / pcs + Pacemaker + Corosync for HA),效果很好。

我需要添加身份验证,该身份验证将传递到其中一台代理服务器。使用基本的LDAP身份验证,我可以使它工作:

Listen 10.2.0.11:80
<VirtualHost 10.2.0.11:80>
  <Proxy balancer://authweb>
    BalancerMember http://win-web01
  </Proxy>

  ServerName authweb
  DocumentRoot "/var/www/html"

  ProxyPreserveHost On

  <Location />
    SetEnv proxy-chain-auth On
    AuthName "Password Protected.  Enter AD User & Password."
    AuthType Basic
    AuthBasicProvider ldap
    AuthBasicAuthoritative Off
    AuthLDAPURL "ldap://10.2.0.7:3268/dc=domain,dc=test?userPrincipalName?sub?(objectClass=*)"
    AuthLDAPBindDN "administrator@DOMAIN.TEST"
    AuthLDAPBindPassword "P@ssw0rd"

    Session On
    SessionCookieName session path=/

    Require valid-user
  </Location>

  ProxyPass / balancer://authweb/
  ProxyPassReverse / balancer://authweb/
</VirtualHost>

此配置运行良好。会弹出一个“身份验证”对话框,接受凭据,然后将凭据传递给代理后面的服务器-在本例中为IIS服务器。

我们想要做的是使用漂亮的表单进行登录,而不是使用Auth弹出对话框。但是,我正在努力使其正常工作。这是我拥有的:

Listen 10.2.0.11:80
<VirtualHost 10.2.0.11:80>
  <Proxy balancer://authweb>
    BalancerMember http://win-web01
  </Proxy>

  ServerName authweb

  ProxyRequests Off
  ProxyPreserveHost On
  SetEnv proxy-chain-auth On
  <Location />
   SetEnv proxy-chain-auth On
   AuthName "Password Protected.  Enter AD User & Password."
   AuthType form
   AuthFormProvider ldap
   AuthFormAuthoritative Off
   AuthFormLoginRequiredLocation "/login.html"

   AuthLDAPURL "ldap://10.2.0.7:3268/dc=domain,dc=test?userPrincipalName?sub?(objectClass=*)"
   AuthLDAPBindDN "administrator@DOMAIN.TEST"
   AuthLDAPBindPassword "P@ssw0rd"

   Session On
   SessionCookieName session path=/

   Require valid-user

   ErrorDocument 401 "/login.html"

  </Location>
  <Location /login.html>
    SetEnv proxy-chain-auth On
    AuthType None
    AuthName "Login"
    Require all granted

    ProxyPass !
  </Location>

  ProxyPass / balancer://authweb/
  ProxyPassReverse / balancer://authweb/
</VirtualHost>

几乎有效。 Apache服务器显示Auth表单,并接受IIS服务器的发布和代理。但是,它没有将凭据传递给IIS,因此系统会提示我IIS凭据的“身份验证”弹出对话框。我不确定我缺少什么。我已经做了很多网络搜索,但还没有发现任何东西。

我知道F5和Kemp之类的解决方案可以实现这种功能,但是我们没有足够的预算,也不需要那么大的系统。但是,我不确定他们是如何做到的。他们可能已经构建了用于处理它的自定义模块,而我正在追逐自己的尾巴,但我希望不会。

非常感谢您的帮助。

埃里克

0 个答案:

没有答案