2011-04-08 6 views
0

우리는 LDAP 인증을 위해 스프링 보안을 사용하는 사용자 정의 Grails 애플리케이션을 보유하고 있습니다. 사용자 DN은 쉼표 (예 : "CN = Smith \, John, CN = Users, DC = example, DC = com")를 포함하지만 관리 사용자의 DN은 아닙니다 (예 : "CN = peadmin, CN = Users, DC = example, DC = com "). 본질적으로 Tomcat 인 Grails 서버에서 응용 프로그램을 실행할 때 모든 것이 정상적으로 인증됩니다. WAR를 빌드하고 WebSphere AS 7에 전개 할 때 admin 사용자 만 로그인 할 수 있습니다. 우리 로그의 예외는 예기치 않은 쉼표에 대해 불평합니다. 예기치 않은 쉼표는 WAS에서 실행될 때 응용 프로그램이 DN을 올바르게 구문 분석/이스케이프 처리하지 못한다고 말합니다. org.springframework - 오류 controller.LoginControllerWebsphere LDAP 스프링 보안 구문 분석 오류

2011-04-07 20 : 58 : 41,975 [0 웹 컨테이너]

봄 보안 3.0.4로 업그레이드 한 후, 여기에 우리가 얻을 특정 예외 메시지입니다. security.authentication.AuthenticationServiceException : DN을 구문 분석하지 못했습니다. 중첩 예외는 org.springframework.ldap.core.ParseException : 1 행 20 열에서 ""이 (가) 발생했습니다. 예상 : ...

답변

0

먼저 불을 질렀습니다. DN은 사용자의 안정된 속성이 아니기 때문에 아무 것도 기초로 절대 사용하지 마십시오. 즉 즉시 깨지게됩니다. 트리에서 사용자를 움직입니다. AD의 경우 samAccountName과 TDS (그리고 대부분의 나머지) uid를 사용해야합니다. 이것은 당신의 현재 문제를 일으키지는 않으나, 그것이 계속해서 일하기를 바라는 실제 생활 응용 프로그램이라면 변화를 시작하거나 나중에 미안 할 것입니다.

둘째 LDAP 쿼리에서 쉼표가있는 특수 문자를 사용하려는 경우 RFC 2254에 따라 사용자가 직접 이스케이프 처리해야합니다. 사용자를 반환 할 때 Tomcat이 사용자를 대신하여이 작업을 수행합니다.