Я работаю над проектом, использующим Netbeans с Glassfish 3.1, и пытаюсь реализовать авторизацию LDAP.Для этого у меня также есть сервер Apache2 с поддержкой LDAP, использующий mod_jk.Суть в том, что когда пользователь заходит на любую страницу сайта в каталоге / sng /, сервер Apache должен запросить учетные данные и перенаправить пользователя на сервер Glassfish, на котором выполняется эта часть сайта.
Apache правильно ставит в очередь и принимает учетные данные LDAP, а затем перенаправляет пользователя в соответствующую область.Но похоже, что переменная REMOTE_USER либо не устанавливается Apache, либо не отправляется mod_jk.Ниже приведены соответствующие файлы конфигурации и фрагменты кода:
httpd.conf
<Location />
AuthBasicProvider ldap
AuthLDAPURL ldap://mainframe/ou=People,dc=dtch,dc=com?uid?sub
AuthzLDAPAuthoritative off
AuthType Basic
AuthName "LDAP"
require valid-user
Options Indexes FollowSymLinks MultiViews +Includes
</Location>
conf.d / jk
JKWorersFile /path/to/workers.properties
JkShmFile /path/to/mod_jk.shm
JkLogFile /path/to/mod_jk.log
JkLogLevel info
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
worker.properties
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=127.0.0.1
worker.worker1.type=ajp13
сайтов с поддержкой / 000 по умолчанию
...
JkMount /*.jsp worker1
JkMount /sng/* worker1
web.xml
<filter>
<filter-name>RemoteUser</filter-name>
<filter-class>path.to.RemoteUser</filter-class>
</filter>
<filter-mapping>
<filter-name>RemoteUser</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
RemoteUser.java
//...
public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain )
throws IOException, ServletException
{
if( request instanceof HttpServletRequest )
{
HttpServletRequest httpServletRequest = ( HttpServletRequest )request;
String username = httpServletRequest.getHeader( "REMOTE_USER" );
if( username == null )
{
// enter here every time
}
// ...
}
//...
}
Наконец я зарегистрировал слушателя на панели управления Glassfish:
Короче, я понятия не имею, почему null возвращается постоянно, и мои поиски в интернете не помогли.Заранее благодарим за любой ввод, который вы можете предоставить.
Примечание: httpServletRequest.getRemoteUser( )
дает тот же нулевой результат.