Spring

Spring Security | AuthenticationEntryPoint 인터페이스 설명 및 BasicAuthenticationEntryPoint 구현체 설명

이진유진 2024. 3. 13. 12:34
반응형

AuthenticationEntryPoint

Spring Security에서 인증이 필요한 리소스에 접근 시 발생하는 인증 예외를 처리하는 인터페이스 입니다. 

인증이 필요한 리소스에 접근하려는 클라이언트의 요청이 인증되지 않았을 때 호출되어 사용자를 로그인 페이지로 리다이렉트하거나, 인증 오류 메세지를 반환하는 등의 작업을 수행합니다. 

 

주요 메소드

commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) 

  • 인증이 필요한 리소스에 접근하려는 클라이언트의 요청이 인증되지 않았을 때 호출
  • 인증이 필요한 리소스에 접근하려는 클라이언트의 요청, 서블릿 요청 및 인증 예외를 받아 작업 처리 
  • 주로 인증되지 않은 사용자에 대한 처리 수행 및 일반적으로 로그인 페이지로 리다이렉트 or 인증 오류 메세지 반환 

BasicAuthenticationEntryPoint 클래스 

public class BasicAuthenticationEntryPoint implements AuthenticationEntryPoint, InitializingBean {
    private String realmName;

	// 기본 생성자
    public BasicAuthenticationEntryPoint() {
    }

	// InitializingBean 인터페이스를 구현한 메소드 
    // realmName이  null이거나, 빈 문자열인 경우 예외를 발생 시키기 때문에,
    // realmName이 설정되지 않았을 때의 오류를 방지하기 위한 것.
    public void afterPropertiesSet() {
        Assert.hasText(this.realmName, "realmName must be specified");
    }
    
	// 클라이언트가 인증되지 않은 리소스에 접근할 때 호출되는 메소드
    // 클라이언트에게 WWW-Authenticate 헤더를 추가해, 인증이 필요하다는 메시지와 함께
    // 'UNAUTHORIZED' 상태 코드 반환 
    // 이 메소드는,클라이언트의 요청이 인증되지 않았음을 나타내고,
    // 클라이언트에게 Basic 인증을 요청하는 데 사용
    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException {
        response.addHeader("WWW-Authenticate", "Basic realm=\"" + this.realmName + "\"");
        response.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase());
    }
	
    // 현재 설정된 realmName 반환
    public String getRealmName() {
        return this.realmName;
    }
    
	// realmName 설정 메소드 
    public void setRealmName(String realmName) {
        this.realmName = realmName;
    }
}

 

반응형