Назад | Перейти на главную страницу

Невозможно получить информацию для входа с помощью AJP

Мы используем Apache для аутентификации LDAP для веб-сервисов, определенных в tomcat. Использование AJP Connector для proxypass, proxyserverpass. Проблема, с которой мы сталкиваемся, заключается в том, что мы не можем получить информацию о пользователе в приложении tomcat. Несмотря на то, что у нас есть атрибут, установленный на false, как этоtomcatAuthentication = false . То, как мы пытаемся получить через веб-сервис, - это веб-сервис входа в систему, который должен получать информацию о пользователе, используя HttpServletRequest.getRemoteUser() но я не вижу, чтобы этот веб-сервис возвращал какое-либо имя пользователя, что означает, что AJP не работает для нас, я считаю.

Пожалуйста, дайте мне знать, если я могу ответить на более конкретный вопрос.

Как устранить неполадки?

Добавление конфигурации на нашем сервере Apache для аутентификации LDAP по запросу Unbeliever в комментарии:

<Directory "/var/lib/apache-tomcat-8.0.33/app/foo/">
#<Directory "/foo">
        AuthType Basic
        AuthName "AD Apache Login"
        AuthBasicProvider ldap
        #AuthzLDAPAuthoritative on
        AuthLDAPURL "ldap://ad.one.example.com:3268/dc=one,dc=example,dc=com?sAMAccountName?sub?(objectClass=*)"
        AuthLDAPBindDN "registration@one.example.com"
        AuthLDAPBindPassword "123456"
        Require valid-user
        Options FollowSymLinks
        Options -MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>
Servername one.example.com
#ProxyPreserveHost On
ProxyPass "/app/foo" "ajp://one.example.com:8009/"
ProxyPassReverse "/app/foo" "ajp://one.example.com:8009/"
#Servername localhost
ErrorLog /var/log/httpd/ajp.error.log
CustomLog /var/log/httpd/ajp.log combined
</VirtualHost>

Проблема здесь в том, что базовая аутентификация выполняется исключительно между Apache и браузером, ничего (или, по крайней мере, очень мало) не передается ни на один прокси-ресурс. Я должен сказать, что на данный момент у меня нет прямого опыта этого, когда я использую LDAP в качестве основного метода аутентификации, но, безусловно, проблема, связанная с недоступностью REMOTE_USER проксируемому ресурсу при использовании базовой аутентификации, вовсе не новая проблема .

Вот фрагмент конфигурации, который вы можете использовать напрямую, если это просто REMOTE_USER, который вам нужен, или можете адаптировать его под свои нужды в противном случае:

RewriteEngine On
# Use mod_rewrite to 'look ahead' and determine the REMOTE_USER variable
# And set an Environment Variable
RewriteRule ^ - [E=MY_REMOTE_USER:%{LA-U:REMOTE_USER}]
# Set a new request header 'THE_REMOTE_USER' based on that new environment vaiable
RequestHeader set THE_REMOTE_USER "%{MY_REMOTE_USER}e"

Затем вы можете получить доступ к HTTP-заголовку THE_REMOTE_USER в своем прокси-приложении.