EgovSpringSecurityLoginFilter.java 파일에서 권한을 불러오는 부분이 궁금합니다.
- 작성자 :
- 김*현
- 작성일 :
- 2021-08-03 13:47:02
- 조회수 :
- 4,529
- 구분 :
- 공통컴포넌트 /
- 진행상태 :
- 완료
Q
UsernamePasswordAuthenticationFilter springSecurity = null;
Map<String, UsernamePasswordAuthenticationFilter> beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class);
if (beans.size() > 0) {
...
LOGGER.debug("before security filter call....");
springSecurity.doFilter(new RequestWrapperForSecurity(httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain);
LOGGER.debug("after security filter call....");
여기 구문을 진행하다 보면
springSecurity.doFilter(new RequestWrapperForSecurity(httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain);
여기를 지나면서 권한이 주어집니다.
권한이 주어졌음은 IDE 디버그 모드로 EgovUserDetailsHelper.getAuthorities()을 실행 했을 때 권한 리스트가 주어지는 것으로 확인했습니다.
권한 리스트를 설정하려고 여기 부분을 아무리 살펴봐도 어디 코드에서 주어지는 것인지 알 수 없어서 질문드려요.
new RequestWrapperForSecurity(httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain);
이 생성자부터 이해를 못 했습니다.
하단의 내부 클래스의 생성자가 실행되던데
class RequestWrapperForSecurity extends HttpServletRequestWrapper {
private String username = null;
private String password = null;
public RequestWrapperForSecurity(HttpServletRequest request, String username, String password) {
super(request);
this.username = username;
this.password = password;
}
생성자 구문에는 request, username, password 세 개의 인자를 받는데,
호출하는 쪽에서는 httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain 개를 전달하고 있습니다.
거기다 getUniqId()를 전달했는데 passowrd라는 변수명으로 받는 것도 잘 이해가 안 가구요.
UsernamePasswordAuthenticationFilter 클래스에는 doFilter를 따로 오버라이딩하지 않아서
AbstractAuthenticationProcessingFilter의 doFilter가 실행되던데 여기 안의 어디 부분을 봐야 authorities가 주어지는 것을 알 수 있고 또 달리 설정할 수 있을까요?
Map<String, UsernamePasswordAuthenticationFilter> beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class);
if (beans.size() > 0) {
...
LOGGER.debug("before security filter call....");
springSecurity.doFilter(new RequestWrapperForSecurity(httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain);
LOGGER.debug("after security filter call....");
여기 구문을 진행하다 보면
springSecurity.doFilter(new RequestWrapperForSecurity(httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain);
여기를 지나면서 권한이 주어집니다.
권한이 주어졌음은 IDE 디버그 모드로 EgovUserDetailsHelper.getAuthorities()을 실행 했을 때 권한 리스트가 주어지는 것으로 확인했습니다.
권한 리스트를 설정하려고 여기 부분을 아무리 살펴봐도 어디 코드에서 주어지는 것인지 알 수 없어서 질문드려요.
new RequestWrapperForSecurity(httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain);
이 생성자부터 이해를 못 했습니다.
하단의 내부 클래스의 생성자가 실행되던데
class RequestWrapperForSecurity extends HttpServletRequestWrapper {
private String username = null;
private String password = null;
public RequestWrapperForSecurity(HttpServletRequest request, String username, String password) {
super(request);
this.username = username;
this.password = password;
}
생성자 구문에는 request, username, password 세 개의 인자를 받는데,
호출하는 쪽에서는 httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain 개를 전달하고 있습니다.
거기다 getUniqId()를 전달했는데 passowrd라는 변수명으로 받는 것도 잘 이해가 안 가구요.
UsernamePasswordAuthenticationFilter 클래스에는 doFilter를 따로 오버라이딩하지 않아서
AbstractAuthenticationProcessingFilter의 doFilter가 실행되던데 여기 안의 어디 부분을 봐야 authorities가 주어지는 것을 알 수 있고 또 달리 설정할 수 있을까요?
환경정보
-
- OS 정보 : 윈도우10, 리눅스
- 표준프레임워크 버전 : 3.9
- JDK(JRE) 정보 : 1.8
- WAS 정보 : 톰캣8.0
- DB 정보 : postgresql
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터입니다.
표준프레임워크 시큐리티 간소화와 스프링 시큐리티의 아키텍처가
인증(Authentication)과 인가(Authorization)로 구분되어 있는데
표준프레임워크센터입니다.
표준프레임워크 시큐리티 간소화와 스프링 시큐리티의 아키텍처가
인증(Authentication)과 인가(Authorization)로 구분되어 있는데
EgovSpringSecurityLoginFilter 은 로그인 처리(인증:Authentication) 부분을 담당하고
인가(Authorization) 는 스프링 시큐리티에서 시큐리티 간소화 서비스 설정을
바탕으로 진행되고 있으니 시큐리티 간소화 서비스 부분을
먼저 확인해보시면 좋을 것 같습니다.
참고로 시큐리티 간소화 서비스는
다음 위키가이드에서
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3.10
다음 부분을 참고하시면 됩니다.
Server Security
- Architecture
- Authentication
- Authorization
- 설정 간소
감사합니다.