2012-02-01 1 views
0

Grails 애플리케이션에서 스프링 보안을 성공적으로 사용하는 데 문제가 있습니다. 그때, 스프링 보안 코어 플러그인을 설치 초기 설치 수행 할 명령을 실행 :부트 스트랩 중 null SecurityContext를 리턴하는 스프링 보안

ReUser 및 ReRole 내 사용자 및 역할 도메인 클래스입니다
s2-quickstart my.package ReUser ReRole 

, 각각을. 그런 다음 Peter Ledbrook의 Simplified Spring Security 화면에서 설정 지침을 계속 수행했지만 실제로 응용 프로그램을 실행하고 사용자를 인증하려고 할 때 문제가 발생했습니다. 부트 스트랩에서 생성 한 사용자 이름은 BadCredentialsException과 함께 인식되지 않았으며, 사용자, 역할 및 클래스 값을 저장하지 않은 경우였습니다. 그러나 저장된 값은 부트 스트랩에 저장된 값의 개수와 함께 저장됩니다.

web.FilterChainProxy Converted URL to lowercase, from: '/index.gsp'; to: '/index.gsp' 
web.FilterChainProxy Candidate is: '/index.gsp'; pattern is /**; matched=true 
web.FilterChainProxy /index.gsp at position 1 of 8 in additional filter chain; firing     Filter: 'SecurityContextPersistenceFilter' 
context.HttpSessionSecurityContextRepository No HttpSession currently exists 
context.HttpSessionSecurityContextRepository No SecurityContext was available from the HttpSession: null. A new one will be created. 
web.FilterChainProxy /index.gsp at position 2 of 8 in additional filter chain; firing Filter: 'MutableLogoutFilter' 
web.FilterChainProxy /index.gsp at position 3 of 8 in additional filter chain; firing Filter: 'RequestHolderAuthenticationFilter' 
web.FilterChainProxy /index.gsp at position 4 of 8 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter' 
web.FilterChainProxy /index.gsp at position 5 of 8 in additional filter chain; firing Filter: 'RememberMeAuthenticationFilter' 
web.FilterChainProxy /index.gsp at position 6 of 8 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter' 
authentication.AnonymousAuthenticationFilter Populated SecurityContextHolder with anonymous token: 'org.sprin[email protected]9055c2bc: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS' 
web.FilterChainProxy /index.gsp at position 7 of 8 in additional filter chain; firing Filter: 'ExceptionTranslationFilter' 
web.FilterChainProxy /index.gsp at position 8 of 8 in additional filter chain; firing Filter: 'FilterSecurityInterceptor' 
intercept.FilterSecurityInterceptor Public object - authentication not attempted 
web.FilterChainProxy /index.gsp reached end of additional filter chain; proceeding with original chain 
access.ExceptionTranslationFilter Chain processed normally 
context.HttpSessionSecurityContextRepository SecurityContext is empty or anonymous - context will not be stored in HttpSession. 
context.SecurityContextPersistenceFilter SecurityContextHolder now cleared, as request processing completed 

이 enties를 수행합니다 (: 내 로그에 다음과 같은 순서를 발견 할 때까지

grails.plugins.springsecurity.userLookup.userDomainClassName = 're.sec.ReUser' 
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 're.sec.ReUserReRole' 
grails.plugins.springsecurity.authority.className = 're.sec.ReRole' 

이러한 결과는, 내가 신비화 떠나되었다 :뿐만 아니라, 관련 클래스가 올바르게으로 Config.groovy 파일에서 확인되었다 특히 'SecurityContext는 비어 있거나 익명입니다 - 컨텍스트는 HttpSession에 저장되지 않습니다.'는 부트 스트랩 프로세스 중에 나타나는 모든 사용자 이름/암호를 인식하지 못하는 이유를 설명합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

참조한 블로그 게시물에서 비밀번호를 이중 인코딩하는 것에 대한 메모를 보았습니까? 버전 1.2에서 사용자 도메인 클래스는 암호를 암호화합니다. 사용자를 만들 때 (예 : 부트 스트랩) 다시 한 번 클릭하면 두 번 인코딩됩니다.

+0

아니, 나는 그 메모를 놓친 것 같아요. 귀하의 제안은 나를 위해 문제를 해결했습니다. 감사. – user1137128