공통컴포넌트 실습중에 안되는 부분이 있는데요. (사용자 인증)
- 작성자 :
- 이*재
- 작성일 :
- 2014-01-07 10:17:40
- 조회수 :
- 800
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
구글링 검색하다가 오픈 커뮤니티에 아래와 같은 현상이 저도 발생을 하는데.. 답변이 없어서 이곳에 글을 올려보네요.
context.getAuthentication() 값이 왜 null이 리턴되는지.. 궁금합니다.
사용자 인증은 제대로 되서 VO에 정상 맵핑됩니다.
.................................
로그인 인증처리를 할때 (ID와 Password값은 정확함)
디버깅을 해보니 EgovUserDetailsSecurityServiceImpl.java 파일의 getAuthorities() 부분에서
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
if (EgovObjectUtil.isNull(authentication)) {
// log.debug("## authentication object is null!!");
return Boolean.FALSE;
}
부분이 있습니다.
여기서 context.getAuthentication() 값이 NULL이라서 결과값을 FALSE를 리턴하는데요.
이 때문에 인증처리가 안되는데 해결 방법을 알려주세요.
이곳 Q&A 8123글 과 같은 현상입니다.
context.getAuthentication() 값이 왜 null이 리턴되는지.. 궁금합니다.
사용자 인증은 제대로 되서 VO에 정상 맵핑됩니다.
.................................
로그인 인증처리를 할때 (ID와 Password값은 정확함)
디버깅을 해보니 EgovUserDetailsSecurityServiceImpl.java 파일의 getAuthorities() 부분에서
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
if (EgovObjectUtil.isNull(authentication)) {
// log.debug("## authentication object is null!!");
return Boolean.FALSE;
}
부분이 있습니다.
여기서 context.getAuthentication() 값이 NULL이라서 결과값을 FALSE를 리턴하는데요.
이 때문에 인증처리가 안되는데 해결 방법을 알려주세요.
이곳 Q&A 8123글 과 같은 현상입니다.
A
안녕하세요. 이승재님.
공통컴포넌트는 2가지 방식의 인증을 지원하기 때문에, 우선 spring security가 활성화되었는지 확인이 필요합니다.
web.xml 상에서 다음과 같은 필터가 등록되어 있으신지 확인 해보십시오.
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
다음으로 가능한 상황은 context-security.xml 설정 상에 현재 URL 패턴이 제외된 경우입니다.
이 경우는 context-security.xml의 <intercept-url pattern=".." filters="none"/>과 같이 security filter에서 제외된 URL에 해당되는지 확인해 보시면 되실 것 같습니다.
참고로 SecurityContextHolder는 web.xml 상에 등록된 springSecurityFilterChain이 동작해야지만 정상 처리 되기 때문에 filter에서 제외된 JSP 에서 직접 참조하는 방식 등은 사용하실 수 없습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
공통컴포넌트는 2가지 방식의 인증을 지원하기 때문에, 우선 spring security가 활성화되었는지 확인이 필요합니다.
web.xml 상에서 다음과 같은 필터가 등록되어 있으신지 확인 해보십시오.
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
다음으로 가능한 상황은 context-security.xml 설정 상에 현재 URL 패턴이 제외된 경우입니다.
이 경우는 context-security.xml의 <intercept-url pattern=".." filters="none"/>과 같이 security filter에서 제외된 URL에 해당되는지 확인해 보시면 되실 것 같습니다.
참고로 SecurityContextHolder는 web.xml 상에 등록된 springSecurityFilterChain이 동작해야지만 정상 처리 되기 때문에 filter에서 제외된 JSP 에서 직접 참조하는 방식 등은 사용하실 수 없습니다.
그럼, 즐거운 하루되십시오.
감사합니다.