[java] Java Jersey에서 특정 경로에 대한 인증 필터를 구현하는 방법은?
- 먼저,
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());
// }
}
}
}
- 그런 다음, 해당 필터를 등록하기 위해
ResourceConfig
클래스를 수정해야 합니다.
import org.glassfish.jersey.server.ResourceConfig;
public class MyApplication extends ResourceConfig {
public MyApplication() {
// 다른 설정들을 추가
register(AuthenticationFilter.class);
}
}
이렇게하면 AuthenticationFilter
클래스가 Jersey 애플리케이션에 등록되어 특정 경로에 대한 인증 필터로 작동합니다.
참고 자료: