Я работаю над решением с обратным прокси (CentOS 7 + Apache w / pcs + 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>
Эта конфигурация работает хорошо. Появляется диалоговое окно «Проверка подлинности», которое принимает учетные данные и передает их на сервер за прокси-сервером - в данном случае на сервер 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, поэтому мне предлагается всплывающее диалоговое окно Auth для учетных данных IIS. Я не уверен, что мне не хватает. Я много занимался поиском в Интернете и пока ничего не нашел.
Я знаю, что подобная функциональность возможна с решениями из таких мест, как F5 и Kemp, но у нас нет на это бюджета, и при этом нам не нужна такая большая система. Тем не менее, я не уверен, как именно они это делают. Возможно, они создали собственные модули для обработки, и я гоняюсь за хвостом, но надеюсь, что нет.
Любая помощь очень ценится.
Эрик