#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 — нет.