[java] Java Jersey에서 특정 경로에 대한 인증 필터를 구현하는 방법은?
  1. 먼저, ContainerRequestFilter 인터페이스를 구현하는 클래스를 작성합니다. 이 클래스는 filter() 메서드를 포함해야 하며, 요청이 특정 경로로 들어왔을 때 인증 로직을 수행합니다.
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Provider;
import javax.ws.rs.core.Response;

@Provider
public class AuthenticationFilter implements ContainerRequestFilter {

    @Override
    public void filter(ContainerRequestContext requestContext) {
        // 요청 경로 확인
        UriInfo uriInfo = requestContext.getUriInfo();
        String path = uriInfo.getPath();
        
        // 특정 경로에 대한 인증 확인
        if (path.equals("/secure-path")) {
            // 인증 로직을 여기에 구현
            // 인증에 실패하면 응답을 거부하거나 특정 응답 코드로 리다이렉션할 수 있음
            // 예를 들면:
            // if (!isAuthenticated) {
            //     requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
            // }
        }
    }
}
  1. 그런 다음, 해당 필터를 등록하기 위해 ResourceConfig 클래스를 수정해야 합니다.
import org.glassfish.jersey.server.ResourceConfig;

public class MyApplication extends ResourceConfig {

    public MyApplication() {
        // 다른 설정들을 추가
        register(AuthenticationFilter.class);
    }
}

이렇게하면 AuthenticationFilter 클래스가 Jersey 애플리케이션에 등록되어 특정 경로에 대한 인증 필터로 작동합니다.

참고 자료: