首页 > 解决方案 > 具有身份验证表单的 Apache 反向代理未将凭据传递给代理服务器

问题描述

我正在研究一个反向代理解决方案(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>

这个配置很好用。将弹出一个 Auth 对话框,接受凭据,并将凭据传递给代理后面的服务器 - 在本例中为 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 这样的解决方案可以实现这样的功能,但我们没有预算,也不需要那么大的系统。但是,我不确定他们是如何做到的。他们可能已经构建了自定义模块来处理它,而我正在追赶我的尾巴,但我希望不会。

任何帮助是极大的赞赏。

埃里克

标签: apacheforms-authenticationreverse-proxy

解决方案


推荐阅读