2012-06-25 5 views
2

Поскольку я запускаю Java с Tomcat6 в качестве контейнера сервлетов, я счел целесообразным использовать Tomcat JNDIRealm feature, чтобы пользователи LDAP могли входить в мой сайт без каких-либо дополнительных усилий. Сервер LDAP, который я использую, - OpenLDAP on Ubuntu.Проверка подлинности Java Tomcat LDAP

Вдобавок к этому у меня есть страница входа в систему, используя form-based authentication по адресу https connection.

Я нашел два очень хороших примера пользователей аутентификации через LDAP, here и here, которые оба достигли того, что я чувствую, что я почти достиг. Почему почти достигнуто?

При попытке входа в систему с неправильными учетными данными я надлежащим образом отправлен в <form-error-page>, login-failed.html в моем случае.

Когда мои учетные данные хороши, и я успешно завершаю проверку, я начинаю получать 403 для всех URL-адресов на сайте. И я не могу удалить ошибку 403 (даже не для страницы входа!), Если я не перезапущу Tomcat.

Я подозреваю, причина в том, что у меня нет roles в царстве или других конфигурационных файлах. Ради краткости я ставлю соответствующие конфигурационные файлы выдержки на pastebin:

Обратите внимание, что Tomcat на основе auth отлично работает, поскольку роль легко привязывается к пользователю в tomcat-users.xml. Поэтому я считаю, что проблема в получении роли для аутентифицированного пользователя из LDAP после успешной аутентификации.

TL/DR

У меня есть вопрос конфигурации при подключении к LDAP Tomcat AUTH. Пользовательские данные извлекаются правильно, но не роль пользователя. Сообщения журнала LDAP доступны по запросу;)

ОБНОВЛЕНИЕ: Я вставил данные LDAP here.

+0

У вас есть группа cn = пользователи сайта, ou = groups, dc = mydomain, dc = com и пользователи в этой группе? – MaVRoSCy

+0

, пожалуйста, также предоставьте дополнительную информацию о вашем разрыве ldap. – MaVRoSCy

+0

@MaVRoSCy Основная структура LDAP [здесь] (http://pastebin.com/rQqxqtsm). Следовательно, у меня есть 'cn = site-users, ou = groups, dc = mydomain, dc = com'. Обратите внимание, что 'site-users' имеет несколько атрибутов' member', указывающих на пользователей. –

ответ

1

Это правильно. Роли LDAP не найдены JNDIRealm. Вам нужно протестировать строку поиска ролей вне Tomcat, чтобы убедиться, что она дает то, что вы думаете, что она должна уступить. Поскольку вы не указали какие-либо детали LDAP, дальнейшие комментарии не могут быть продолжены.

Внесение разрешения безопасности на весь сайт с/* является ошибкой. Вам нужно исключить страницу входа и, возможно, также страницу с главной страницей и забыли пароль, возможно, больше, от необходимости выполнять роль.

+0

LDAP подробнее [здесь] (http://pastebin.com/rQqxqtsm). Обратите внимание, что 'site-users' имеет несколько атрибутов' member', указывающих на пользователей. –

+0

@ У пользователей сайта Josvic нет атрибутов 'member', которые я вижу. У вас, похоже, есть «uid» в группах LDAP, но вы сообщаете LDAP для поиска в «члене». – EJP

+0

У меня есть несколько пользователей с 'uid' под организационным подразделением' objectClass' 'people'. Они являются * членами * объекта 'groupOfNames' objectClass' site-users'. Проблема с этим? Таким образом, пользователь должен быть аутентифицирован. Но пользователь не соответствует роли 'site-users'. –

Смежные вопросы