Ошибка анализа безопасности Websphere LDAP Spring

#sprin& #&rails #ldap #websphere #websphere-7

#sprin& #&rails #ldap #websphere #websphere-7

Вопрос:

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

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

2011-04-07 20:58:41,975 [WebContainer: 0] Контроллер ОШИБОК.Lo&inController — or&.sprin&framework.security.аутентификация.Исключение AuthenticationServiceException: не удалось проанализировать DN; вложенным исключением является or&.sprin&framework.ldap.core.Исключение ParseException: обнаружено «» в строке 1, столбец 20. Ожидалось: …

Ответ №1:

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

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