스프링 시큐리티 로그인시 ROLE_ANONYMOUS로 인증이 되는 문제
- 작성자 :
- 윤*원
- 작성일 :
- 2013-09-05 19:05:17
- 조회수 :
- 2,055
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요
공통컴포넌트를 이용하여 개발하는 중 궁금한점이 있어 글을 남김닙니다.
스프링 시큐리티 로그인 시에
egovframework.com.sec.ram.service.impl.EgovUserDetailsSecurityServiceImpl
String username = authentication.getName();
가 항상 ROLE_ANONYMOUS 로 인증됩니다.
제가 로그인하는 계정인 USER 는 분명 IS_AUTHENTICATED_FULLY 을 부여해놨습니다.
쿼리를 돌려봐도
SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY
FROM COMTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = 'USER';
result:
USRCNFRM_00000000001 IS_AUTHENTICATED_FULLY
라고 정상으로 나옵니다.
기존 qna 를 검색해보니
org.springframework.security.ui.AbstractProcessingFilter의 authResult 를 확인해보라고 나오더군요
해서 그부분을 디버깅 해봤더니
org.springframework.security.providers.UsernamePasswordAuthenticationToken@9c766dd5:
Principal: egovframework.com.sec.security.userdetails.EgovUserDetails@1a648000:
Username: USER;
Password: [PROTECTED];
Enabled: true;
AccountNonExpired: true;
credentialsNonExpired: true;
AccountNonLocked: true;
Granted Authorities: IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED, ROLE_ANONYMOUS;
Password: [PROTECTED];
Authenticated: true;
Details: org.springframework.security.ui.WebAuthenticationDetails@0:
RemoteIpAddress: 127.0.0.1;
SessionId: A8287CC16FE19A96DADDA9D08888FCF2;
Granted Authorities: IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED, ROLE_ANONYMOUS
위와같은 정보를 담고 있더군요
그런데 보시는 것과 같이
Granted Authorities가 하나가 아니라 여러개입니다.
하나여야 될것 같은데...이상하게 여러개네요...
어느부분이 문제인지 도통 감이 오질않아 질문을 남깁니다.
디버깅 모드 로그인시 로그도 첨부파일로 첨부합니다.
감사합니다
공통컴포넌트를 이용하여 개발하는 중 궁금한점이 있어 글을 남김닙니다.
스프링 시큐리티 로그인 시에
egovframework.com.sec.ram.service.impl.EgovUserDetailsSecurityServiceImpl
String username = authentication.getName();
가 항상 ROLE_ANONYMOUS 로 인증됩니다.
제가 로그인하는 계정인 USER 는 분명 IS_AUTHENTICATED_FULLY 을 부여해놨습니다.
쿼리를 돌려봐도
SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY
FROM COMTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = 'USER';
result:
USRCNFRM_00000000001 IS_AUTHENTICATED_FULLY
라고 정상으로 나옵니다.
기존 qna 를 검색해보니
org.springframework.security.ui.AbstractProcessingFilter의 authResult 를 확인해보라고 나오더군요
해서 그부분을 디버깅 해봤더니
org.springframework.security.providers.UsernamePasswordAuthenticationToken@9c766dd5:
Principal: egovframework.com.sec.security.userdetails.EgovUserDetails@1a648000:
Username: USER;
Password: [PROTECTED];
Enabled: true;
AccountNonExpired: true;
credentialsNonExpired: true;
AccountNonLocked: true;
Granted Authorities: IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED, ROLE_ANONYMOUS;
Password: [PROTECTED];
Authenticated: true;
Details: org.springframework.security.ui.WebAuthenticationDetails@0:
RemoteIpAddress: 127.0.0.1;
SessionId: A8287CC16FE19A96DADDA9D08888FCF2;
Granted Authorities: IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED, ROLE_ANONYMOUS
위와같은 정보를 담고 있더군요
그런데 보시는 것과 같이
Granted Authorities가 하나가 아니라 여러개입니다.
하나여야 될것 같은데...이상하게 여러개네요...
어느부분이 문제인지 도통 감이 오질않아 질문을 남깁니다.
디버깅 모드 로그인시 로그도 첨부파일로 첨부합니다.
감사합니다
A
안녕하세요. 윤종원님.
인증된 사용자의 Authority 목록은 얻는 방법은 다음과 같습니다.
GrantedAuthority[] authorities = authentication.getAuthorities();
디버깅 하신 정보롤 봐서는 위와 같이 확인해 보시면 정상적으로 할당된 인증을 사용하실 수 있으실 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
인증된 사용자의 Authority 목록은 얻는 방법은 다음과 같습니다.
GrantedAuthority[] authorities = authentication.getAuthorities();
디버깅 하신 정보롤 봐서는 위와 같이 확인해 보시면 정상적으로 할당된 인증을 사용하실 수 있으실 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.