An authentication filter needs to be created. This filter will be called every time a request arrives on your backend.
@Protected
@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {
private static final String AUTHORIZATION_PREFIX = "Bearer ";
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
String authorizationHeader = requestContext.getHeaderString(HttpHeaders.AUTHORIZATION);
if(authorizationHeader == null || !authorizationHeader.startsWith(AUTHORIZATION_PREFIX)) {
throw new NotAuthorizedException("Usuário não logado"); //se não existe o header, lança uma exceção
}
String token = authorizationHeader.substring(AUTHORIZATION_PREFIX.length()).trim();
try {
//aqui você chamada o seu método de validação
validateToken(token);
} catch (Exception e) {
//caso não consiga validar, aborte a conexão com um status correspondente ao erro
requestContext.abortWith(Response.status(Response.Status.FORBIDDEN).build());
}
}