로그인 인증 성공 후 세션이 유지되지 않습니다.
- 작성자 :
- 홍*모
- 작성일 :
- 2017-08-31 17:40:15
- 조회수 :
- 2,790
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
로그인 커스텀 필터를 추가 하면 로그인 성공 후
[CustomAuthFilter] Authentication success. Updating SecurityContextHolder to contain:
UsernamePasswordAuthenticationToken: Granted Authorities: USER
이와 같이 생성된 인증이 메인페이지로 리다이렉트 할때
[AnonymousAuthenticationFilter] Populated SecurityContextHolder with anonymous token: 'org.springframework.security.authentication.AnonymousAuthenticationToken Granted Authorities: ROLE_ANONYMOUS'
ROLE_ANONYMOUS 로 변경되어 Access is denied 가 발생합니다.
이전 프로젝트에서도 사용하던 로직인 어떤 이유로 이런 상황이 발생하는지
짐작되는 원인이 있으시다면 답변 부탁드리겠습니다.
-- [추가한 인증필터]
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception{
return super.authenticationManagerBean();
}
@Bean
public CustomAuthFilter customAuthFilter() throws Exception {
CustomAuthFilter authFilter = new CustomAuthFilter();
authFilter.setAuthenticationManager(this.authenticationManagerBean());
authFilter.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher("/accountVerify"));
authFilter.setPostOnly(false);
authFilter.setUsernameParameter("userID");
authFilter.setPasswordParameter("passwd");
authFilter.setAuthenticationSuccessHandler(successHandler());
authFilter.setAuthenticationFailureHandler(failureHandler());
return authFilter;
}
http.addFilterBefore(customAuthFilter(), UsernamePasswordAuthenticationFilter.class);
[CustomAuthFilter] Authentication success. Updating SecurityContextHolder to contain:
UsernamePasswordAuthenticationToken: Granted Authorities: USER
이와 같이 생성된 인증이 메인페이지로 리다이렉트 할때
[AnonymousAuthenticationFilter] Populated SecurityContextHolder with anonymous token: 'org.springframework.security.authentication.AnonymousAuthenticationToken Granted Authorities: ROLE_ANONYMOUS'
ROLE_ANONYMOUS 로 변경되어 Access is denied 가 발생합니다.
이전 프로젝트에서도 사용하던 로직인 어떤 이유로 이런 상황이 발생하는지
짐작되는 원인이 있으시다면 답변 부탁드리겠습니다.
-- [추가한 인증필터]
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception{
return super.authenticationManagerBean();
}
@Bean
public CustomAuthFilter customAuthFilter() throws Exception {
CustomAuthFilter authFilter = new CustomAuthFilter();
authFilter.setAuthenticationManager(this.authenticationManagerBean());
authFilter.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher("/accountVerify"));
authFilter.setPostOnly(false);
authFilter.setUsernameParameter("userID");
authFilter.setPasswordParameter("passwd");
authFilter.setAuthenticationSuccessHandler(successHandler());
authFilter.setAuthenticationFailureHandler(failureHandler());
return authFilter;
}
http.addFilterBefore(customAuthFilter(), UsernamePasswordAuthenticationFilter.class);
A
안녕하세요.
커스텀 필터를 적용하신 부분이라 문제를 정확히 판단하기는 어려울 듯 합니다.
먼저 로그인되어 UsernamePasswordAuthenticationToken이 정상적으로 발급되므로(로그상) 작성하신 커스텀 필터를 정상작동으로 예상되며
인증시 등록한 토큰이 contextholder에 있는지 세션에 로그인 정보를 저장하셨으면 그 정보도 있는지
확인이 필요해 보입니다.
또한, 권한 체크시 getAuthenticatedUser를 디버그를 해보셔서 로그인 정보 권한 정보
그리고 xml에 custom-filter로 필터 설정을 되어 있는지도 확인해 보시기 바랍니다.
이전에 정상작동된 소스이시면 web.xml 과 스프링 context쪽 xml도 누락된 내용이 없는지 확인하시면 좋을 듯합니다.
감사합니다.
커스텀 필터를 적용하신 부분이라 문제를 정확히 판단하기는 어려울 듯 합니다.
먼저 로그인되어 UsernamePasswordAuthenticationToken이 정상적으로 발급되므로(로그상) 작성하신 커스텀 필터를 정상작동으로 예상되며
인증시 등록한 토큰이 contextholder에 있는지 세션에 로그인 정보를 저장하셨으면 그 정보도 있는지
확인이 필요해 보입니다.
또한, 권한 체크시 getAuthenticatedUser를 디버그를 해보셔서 로그인 정보 권한 정보
그리고 xml에 custom-filter로 필터 설정을 되어 있는지도 확인해 보시기 바랍니다.
이전에 정상작동된 소스이시면 web.xml 과 스프링 context쪽 xml도 누락된 내용이 없는지 확인하시면 좋을 듯합니다.
감사합니다.