Обратный прокси-сервер apache с формой аутентификации не передает учетные данные прокси-серверу

Я работаю над решением обратного прокси (CentOS 7 + Apache с ПК + Pacemaker + Corosync для 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 отображает форму аутентификации и принимает сообщение и прокси на сервер IIS. Однако он не передает учетные данные в IIS, поэтому мне предлагается всплывающее диалоговое окно Auth для учетных данных IIS. Я не уверен, что мне не хватает. Я много искал в Интернете и пока ничего не нашел.

Я знаю, что такая функциональность возможна с решениями из таких мест, как F5 и Kemp, но у нас нет на это бюджета, и нам не нужна такая большая система. Однако я не совсем понимаю, как они это делают. Возможно, они создали специальные модули для этого, и я гонюсь за своим хвостом, но я надеюсь, что нет.

Любая помощь приветствуется.

Эрик

Чтобы было ясно, вы хотите, чтобы Apache представил страницу аутентификации, а затем отправил эту информацию в IIS? Почему бы не позволить IIS позаботиться об этой аутентификации? Это то, что он делает сейчас, верно? Думаю, вам нужен NTLM в Apache (bloke.org/linux/…), YMMV.

Nic3500 10.09.2018 13:39

Да, именно этого мы и хотим. В настоящее время у нас есть обратный прокси-сервер перед парой серверов SharePoint, на которых включена проверка подлинности с помощью форм. Проблема в том, что серверы SharePoint имеют как внутренний, так и внешний доступ, и SharePoint обрабатывает одну и ту же учетную запись / учетную запись как два разных пользователя в отношении создаваемых им профилей. Мне сообщили, что лучшим решением является обратный прокси-сервер с аутентификацией, тогда у всех пользователей будет только один профиль. Из-за бюджетных ограничений решения F5 & Kemp неосуществимы. Итак, я пытаюсь сделать один.

Eric C. 10.09.2018 14:42

См. Этот пост для получения дополнительной информации: social.technet.microsoft.com/Forums/de-DE/…

Eric C. 10.09.2018 15:02
1
3
1 222
0

Другие вопросы по теме