KOSA Spring - Security (403처리 class)

채정윤·2025년 4월 24일

Spring

목록 보기
23/25

403처리

CustomAccessDeniedHandler.java

...
@Log4j
public class CustomAccessDeniedHandler implements AccessDeniedHandler {

  @Override
  public void handle(HttpServletRequest request, 
      HttpServletResponse response, AccessDeniedException accessException)
      throws IOException, ServletException {

    log.error("Access Denied Handler");

    log.error("Redirect....");

    response.sendRedirect("/accessError");
  }
}

security-context.xml

	<bean id="customAccessDenied"
		class="org.zerock.security.CustomAccessDeniedHandler"></bean>

	<security:http>
		...
		<security:access-denied-handler ref="customAccessDenied"/>
	</security:http>

관련 개념 정리

1. AccessDeniedHandler란?

  • Spring Security에서 인가(authorization) 실패 시 처리되는 인터페이스.
  • 즉, 로그인은 했지만 권한이 없어서 접근이 거부될 때(403 Forbidden) 호출됨.

2. CustomAccessDeniedHandler 클래스

  • AccessDeniedHandler 인터페이스를 구현한 커스텀 핸들러.
  • 구성 요소:
    • handle() 메서드: 인가 실패 시 호출됨.
      • HttpServletRequest, HttpServletResponse, AccessDeniedException을 인자로 받음.
      • 로그 출력 (log.error(...))
      • /accessError로 리다이렉트

🔁 동작 흐름:

  1. 사용자가 권한 없이 URL 접근 시
  2. CustomAccessDeniedHandler.handle() 호출
  3. 로그 출력 후 /accessError 페이지로 리다이렉트

3. security-context.xml 설정

  • <bean> 태그로 커스텀 핸들러를 등록:
    <bean id="customAccessDenied"
          class="org.zerock.security.CustomAccessDeniedHandler"/>
  • <security:access-denied-handler>로 Spring Security에 등록:
    <security:access-denied-handler ref="customAccessDenied"/>

📌 핵심 요약

요소역할
AccessDeniedHandler인가 실패(403) 발생 시 실행되는 인터페이스
<security:access-denied-handler>커스텀 핸들러를 Spring Security에 연결하는 설정

0개의 댓글