I am trying to build a maven web app that implements Container Request Filter.
I am using NetBeans IDE with jax-rs framework and Tom Cat Server.
And testing the program using Postman.
But getting Class not found error.
Here is my filter program.
import com.sun.jersey.core.util.Base64;
import java.io.IOException;
import java.util.List;
import java.util.StringTokenizer;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
@Provider
public class SecurityFilter implements ContainerRequestFilter {
private static final String AUTHORIZATION_HEADER_KEY = "Authorization";
private static final String AUTHORIZATION_HEADER_PREFIX = "Basic ";
private static final String SECURED_URL_PREFIX = "test";
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
if (requestContext.getUriInfo().getPath().contains(SECURED_URL_PREFIX)) {
List<String> authHeader = requestContext.getHeaders().get(AUTHORIZATION_HEADER_KEY);
if (authHeader != null && authHeader.size() > 0) {
String authToken = authHeader.get(0);
authToken = authToken.replaceFirst(AUTHORIZATION_HEADER_PREFIX, "");
String decodedString = Base64.base64Decode(authToken);
StringTokenizer tokenizer = new StringTokenizer(decodedString, ":");
String username = tokenizer.nextToken();
String password = tokenizer.nextToken();
if ("user".equals(username) && "password".equals(password)) {
System.out.println("Headers :" + requestContext.getHeaders());
}
}
Response unauthorizedStatus = Response
.status(Response.Status.UNAUTHORIZED)
.entity("User cannot access the resource.")
.build();
requestContext.abortWith(unauthorizedStatus);
}
}
}
And here is my error
javax.servlet.ServletException: Servlet.init() for servlet [Jersey REST Service] threw exception
java.lang.NoClassDefFoundError: javax/ws/rs/container/ContainerRequestFilter
Can anyone help?