나는 Active Directory 도메인에 대해 사용자를 인증하기 위해 acegi plugin (v0.5.2)을 사용하는 grails (v1.2.1) 응용 프로그램을 가지고 있습니다.Grails의 acegi 플러그인이 weblogic에서 작동하지 않는 이유는 무엇입니까?
"grails run-app"를 사용하여 앱을 실행하는 한 모든 것이 완벽하게 작동합니다. 올바른 컨트롤러/액션이 보호되고 사용자가 성공적으로 로그인 할 수 있으며 각 페이지 요청시 로그인 할 필요가 없습니다.
Weblogic 10.3 내부에서 전쟁으로 앱을 실행하면 모든 것이 손상됩니다 하위. 올바른 컨트롤러/작업에는 인증이 필요하지만 로그인 성공 후 사용자는 원래 요청한 URL 대신 defaultTargetUrl로 항상 전송됩니다. 로그인에 성공한 후 방금 로그인 한 것과 동일한 보호 페이지로 돌아 가려는 경우 다시 로그인하라는 메시지가 표시됩니다 (이는 성공적인 로그인이 나를 defaultTargetUrl로 보내므로 도움이되지 않습니다). 로그인 페이지에 의도적으로 불량 사용자를 입력하거나 패스하면 로그인 페이지로 다시 보내지 만 확인 메시지는 나타나지 않습니다.
I 일부 로그/수행 디버깅을 첨가하고, 다음 결정했습니다 [조직 :
- 필터 체인은 I는 로직 또는 독립형에서 실행할지 여부를 동일한 순서로 동일한 클래스의 인스턴스를 가진다. springframework.security.context.HttpSessionContextIntegrationFilter, org.codehaus.groovy.grails.plugins.springsecurity.FixRedirectLogoutFilter, org.codehaus.groovy.grails.plugins.springsecurity.GrailsAuthenticationProcessingFilter, org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter, org.springframework.security. ui.rememberme.RememberMeProcessingFilter, org.springframework.security.providers.anonymous.AnonymousProcessingFilter, org.springframework.security.ui.ExceptionTranslationFilter]
- 가 실행 독립 (Grails를 실행 - 응용 프로그램) 내 세션이 org.codehaus.groovy있다 .grails.FLASH_SCOPE 및 SPRING_SECURITY_SAVED_REQUEST_KEY 속성은 보안 필터가 사용자의 자격 증명을 인증하려고 시도하기 전에 저장됩니다. 웹 로직은 그 시점에서 세션에 아무런 속성이 없습니다. 나는 체크했다. 그리고 속성 값 클래스는 모두 직렬화 가능하다.
- weblogic에서 실행 중일 때 HttpSessionContextIntegrationFilter의 시작 부분에서 request.getSession (false)는 null을 반환합니다.