인증관련 다시 질문 드립니다.
- 작성자 :
- 김*진
- 작성일 :
- 2017-08-25 19:56:02
- 조회수 :
- 1,462
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
제가 말씀드리고자 했던 부분은
AnonumousAuthenticationToken 이 넘어오지 않도록 하려 했던것 입니다.
질문을 올려놓고 이것저것 만져보면서 권한이 넘어오는 부분을 확인해봤더니
항상 ROLE_ANONYMOUS 만 넘어오더라구요
ROLE_USER 가 넘어와야 AnonumousAuthenticationToken 대신에 UsernamePasswordAuthenticationToken 이 넘어오게되는것 아닌가요?
아래는 이전에 답변주신 내용입니다.
== 질문 ==
전자정부 실행환경 3.1
DB = Oracle
Server = tomcat 6.0.14
JDK = 1.6
EgovUserDetailsHelper 클래스 안에 있는
public static Boolean isAuthenticated() 메소드를 호출할 때에
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
이렇게 해서 인증된 사용자인지 불러오게 되잖아요?
그런데 authentication에 UsernamePasswordAuthenticationToken이 아닌, AnonumousAuthenticationToken이 넘어온다는건 인증이 되지 않은 사용자라는 거잖아요?
그래서 자꾸 로그인을 하는과정에서 오류가 발생합니다.
context-egovuserdetailshelper.xml에 bean으로 egovUserDetailsSecurityService를 egovframework.com.sec.ram.service.impl.EgovUserDetailsSecurityServiceImpl클래스로 등록해두었습니다.
이 상황에서 질문을 드릴게요.
인증을 처리하는 DB테이블과 어떤 컬럼에 어떤값을 가지고 비교하는지, 이때 어떤 값이 넘어와야 AnonumousAuthenticationToken이 아닌, UsernamePasswordAuthenticationToken을 받을 수 있는지
간단하게 어떻게 하면 UsernamePasswordAuthenticationToken를 받을 수 있는지 궁금합니다.
자세한 답변 부탁드립니다 ㅠㅠ
좋은하루 되세요!
== 답변 ==
안녕하세요.
표준프레임워크 센터 입니다.
센터에서 제공하는 예제는 공통컴포넌트 탑제를 통해
UsernamePasswordAuthenticationFilter 필터 동작시 AnonumousAuthenticationToken 가 생성 됩니다.
공통컴포넌트 소스 중 EgovSpringSecurityLoginFilter 자바파일을 참고 하시면 됩니다.
AnonumousAuthenticationToken 직접 사용에 대한 가이드는 센터에서 제공하고 있지 않지만
아래 사이트에서 관련 샘플로 참고 하시면 될꺼 같습니다.
https://www.programcreek.com/java-api-examples/index.php?api=org.springframework.security.authentication.UsernamePasswordAuthenticationToken
http://flyburi.com/584
관련 API는 아래에서 참고 하세요.
https://docs.spring.io/autorepo/docs/spring-security/3.2.4.RELEASE/apidocs/org/springframework/security/authentication/AnonymousAuthenticationToken.html
감사합니다.
AnonumousAuthenticationToken 이 넘어오지 않도록 하려 했던것 입니다.
질문을 올려놓고 이것저것 만져보면서 권한이 넘어오는 부분을 확인해봤더니
항상 ROLE_ANONYMOUS 만 넘어오더라구요
ROLE_USER 가 넘어와야 AnonumousAuthenticationToken 대신에 UsernamePasswordAuthenticationToken 이 넘어오게되는것 아닌가요?
아래는 이전에 답변주신 내용입니다.
== 질문 ==
전자정부 실행환경 3.1
DB = Oracle
Server = tomcat 6.0.14
JDK = 1.6
EgovUserDetailsHelper 클래스 안에 있는
public static Boolean isAuthenticated() 메소드를 호출할 때에
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
이렇게 해서 인증된 사용자인지 불러오게 되잖아요?
그런데 authentication에 UsernamePasswordAuthenticationToken이 아닌, AnonumousAuthenticationToken이 넘어온다는건 인증이 되지 않은 사용자라는 거잖아요?
그래서 자꾸 로그인을 하는과정에서 오류가 발생합니다.
context-egovuserdetailshelper.xml에 bean으로 egovUserDetailsSecurityService를 egovframework.com.sec.ram.service.impl.EgovUserDetailsSecurityServiceImpl클래스로 등록해두었습니다.
이 상황에서 질문을 드릴게요.
인증을 처리하는 DB테이블과 어떤 컬럼에 어떤값을 가지고 비교하는지, 이때 어떤 값이 넘어와야 AnonumousAuthenticationToken이 아닌, UsernamePasswordAuthenticationToken을 받을 수 있는지
간단하게 어떻게 하면 UsernamePasswordAuthenticationToken를 받을 수 있는지 궁금합니다.
자세한 답변 부탁드립니다 ㅠㅠ
좋은하루 되세요!
== 답변 ==
안녕하세요.
표준프레임워크 센터 입니다.
센터에서 제공하는 예제는 공통컴포넌트 탑제를 통해
UsernamePasswordAuthenticationFilter 필터 동작시 AnonumousAuthenticationToken 가 생성 됩니다.
공통컴포넌트 소스 중 EgovSpringSecurityLoginFilter 자바파일을 참고 하시면 됩니다.
AnonumousAuthenticationToken 직접 사용에 대한 가이드는 센터에서 제공하고 있지 않지만
아래 사이트에서 관련 샘플로 참고 하시면 될꺼 같습니다.
https://www.programcreek.com/java-api-examples/index.php?api=org.springframework.security.authentication.UsernamePasswordAuthenticationToken
http://flyburi.com/584
관련 API는 아래에서 참고 하세요.
https://docs.spring.io/autorepo/docs/spring-security/3.2.4.RELEASE/apidocs/org/springframework/security/authentication/AnonymousAuthenticationToken.html
감사합니다.
A
안녕하세요.
이해하신 내용이 맞습니다.
UsernamePasswordAuthenticationToken 이 발생하려면 먼저 로그인이 되어야 합니다.
즉, 사용자 인증이 되어야 합니다.
로그인이 되지않으면 spring security에서 AnonumousAuthenticationToken 이 발생되며 기본권한인
ROLE_ANONYMOUS가 부여됩니다.
로그인이 되면 UsernamePasswordAuthenticationToken 이 발생하면서 해당 사용자의 권한 (예, ROLE_USER 또는 ROLE_ADMIN) 부여되면서 해당 URL (xxx.do)의 권한을 체크가 진행된다고 보시면 됩니다.
로그인시 해당 사용자의 인증과 정보를 세션에 담는 과정은 이전에 말씀드린 EgovSpringSecurityLoginFilter 클래스에서 확인 할 수 있습니다.
로그인 인증 및 권한의 대한 테스트를 해보시려면 공통컴포넌트에서
일반로그인, 역활/권한관리 모두 를 생성하여 확인해 볼수 있습니다.
그리고 아래 링크에서 기본으로 생성되는 사용자 ID와 비밀번호 확인할 수 있습니다. (링크 가이드 하단)
감사합니다.
이해하신 내용이 맞습니다.
UsernamePasswordAuthenticationToken 이 발생하려면 먼저 로그인이 되어야 합니다.
즉, 사용자 인증이 되어야 합니다.
로그인이 되지않으면 spring security에서 AnonumousAuthenticationToken 이 발생되며 기본권한인
ROLE_ANONYMOUS가 부여됩니다.
로그인이 되면 UsernamePasswordAuthenticationToken 이 발생하면서 해당 사용자의 권한 (예, ROLE_USER 또는 ROLE_ADMIN) 부여되면서 해당 URL (xxx.do)의 권한을 체크가 진행된다고 보시면 됩니다.
로그인시 해당 사용자의 인증과 정보를 세션에 담는 과정은 이전에 말씀드린 EgovSpringSecurityLoginFilter 클래스에서 확인 할 수 있습니다.
로그인 인증 및 권한의 대한 테스트를 해보시려면 공통컴포넌트에서
일반로그인, 역활/권한관리 모두 를 생성하여 확인해 볼수 있습니다.
그리고 아래 링크에서 기본으로 생성되는 사용자 ID와 비밀번호 확인할 수 있습니다. (링크 가이드 하단)
감사합니다.