Ошибка разбора Websphere LDAP Spring Security - PullRequest
0 голосов
/ 08 апреля 2011

У нас есть специальное приложение Grails, которое использует Spring Security для аутентификации LDAP. DN пользователя содержат запятые (например, «CN = Smith \, John, CN = Users, DC = пример, DC = com»), но DN нашего администратора не содержит (например, «CN = peadmin, CN = Users, DC»). = пример, DC = ком "). Когда я запускаю приложение с сервера Grails, который по сути является Tomcat, все аутентифицируется нормально. Когда я создаю WAR и внедряю в WebSphere AS 7, я могу войти только с правами администратора. Исключение в нашем журнале жалуется на неожиданную запятую, которая говорит о том, что приложение неправильно анализирует / экранирует DN при работе в WAS.

После обновления до Spring Security 3.0.4 вот конкретное сообщение об исключении, которое мы получаем:

2011-04-07 20: 58: 41,975 [WebContainer: 0] ОШИБКА controller.LoginController - org.springframework.security.authentication.AuthenticationServiceException: Не удалось проанализировать DN; Вложенное исключение - org.springframework.ldap.core.ParseException: найдено "" в строке 1, столбец 20. Ожидал: ...

1 Ответ

0 голосов
/ 09 апреля 2011

Во-первых, вы играете с огнем.Никогда не использует DN как основу для чего-либо, так как он не является стабильным атрибутом пользователя.Он ломается мгновенно, когда т.е.перемещение пользователей по дереву.С AD вы должны использовать samAccountName и с TDS (и большинство остальных) uid.Это не вызывает ваших текущих проблем, но если это реальное приложение, которое вы хотите продолжать работать, пожалуйста, начните что-то менять, или вы потом пожалеете.

Во-вторых, если вы настаиваете на использовании чего-либо с запятыми сэто специальный символ в запросах LDAP, вы должны сами избегать его согласно RFC 2254. Tomcat делает это за вас, когда возвращает пользователя, WAS - нет.

...