권한관리 anonymousUser / roleAnonymous
- 작성자 :
- 장*형
- 작성일 :
- 2014-07-10 11:50:48
- 조회수 :
- 1,755
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
권한관리 ( spring-security ) 도중에 문제가 생겨 질문드립니다.
로그인을 하지 않은 상태에서
EgovUserDetailsHelper.isAuthenticated() 실행시 true 값이 나오네요.
false가 나와야하는데.. 소스상에서는 authentication 의 name 값이 'roleAnonymous' 이면 false를 리턴하는데
현재 로그인하지 않은 제 authentication 객체의 name 값은 'anonymousUser' 로 되어있습니다.
3.x 대 spring-securty 를 사용하고 있는데, 버젼의 차이인가요?
2.x 대에서는 인증되지 않은 사용자를 'roleAnonymous' 로
3.x 대에서는 인증되지 않은 사용자를 'anonymousUser' 로 부여하는 것인가요?
로그인을 하지 않은 상태에서
EgovUserDetailsHelper.isAuthenticated() 실행시 true 값이 나오네요.
false가 나와야하는데.. 소스상에서는 authentication 의 name 값이 'roleAnonymous' 이면 false를 리턴하는데
현재 로그인하지 않은 제 authentication 객체의 name 값은 'anonymousUser' 로 되어있습니다.
3.x 대 spring-securty 를 사용하고 있는데, 버젼의 차이인가요?
2.x 대에서는 인증되지 않은 사용자를 'roleAnonymous' 로
3.x 대에서는 인증되지 않은 사용자를 'anonymousUser' 로 부여하는 것인가요?
A
안녕하세요. 장호형님.
말씀하신 것 처럼 버전 차이에 의한 문제입니다.
우선 다음 가이드(Spring Security 업그레이드 가이드) 상의 8번 항목을 참조하시면 되실 것 같습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:server_security:upgrade
(변경된 EgovUserDetailsHelper.isAuthenticated() 메소드 참조)
public static Boolean isAuthenticated() {
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
if (EgovObjectUtil.isNull(authentication)) {
LOGGER.debug("## authentication object is null!!");
return Boolean.FALSE;
}
String username = authentication.getName();
if (username.equals("anonymousUser")) { // 기존 2.0.8의 경우 'roleAnonymous'
LOGGER.debug("## username is {}", username);
return Boolean.FALSE;
}
Object principal = authentication.getPrincipal();
return (Boolean.valueOf(!EgovObjectUtil.isNull(principal)));
}
그럼, 즐거운 하루되십시오.
감사합니다.
말씀하신 것 처럼 버전 차이에 의한 문제입니다.
우선 다음 가이드(Spring Security 업그레이드 가이드) 상의 8번 항목을 참조하시면 되실 것 같습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:server_security:upgrade
(변경된 EgovUserDetailsHelper.isAuthenticated() 메소드 참조)
public static Boolean isAuthenticated() {
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
if (EgovObjectUtil.isNull(authentication)) {
LOGGER.debug("## authentication object is null!!");
return Boolean.FALSE;
}
String username = authentication.getName();
if (username.equals("anonymousUser")) { // 기존 2.0.8의 경우 'roleAnonymous'
LOGGER.debug("## username is {}", username);
return Boolean.FALSE;
}
Object principal = authentication.getPrincipal();
return (Boolean.valueOf(!EgovObjectUtil.isNull(principal)));
}
그럼, 즐거운 하루되십시오.
감사합니다.