estou usando o JWT para fazer autenticação no meu sistema porém em um determinado lugar do sistema o Da o erro abaixo.
om.auth0.jwt.internal.com.fasterxml.jackson.core.JsonParseException: Unexpected character ('?' (code 65533 / 0xfffd)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: java.io.StringReader@528e4ed8; line: 1, column: 2]
String header = new String(request.getHeader(HttpHeaders.AUTHORIZATION).getBytes("UTF-8"));
if (header == null || header.isEmpty() || header.length() < 7) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
logger.warn("Tentativa de acesso sem token à URL " + request.getServletPath());
return;
}
try {
Map<String, Object> dados = JwtTokenHolder.verificar(header.substring(7));
LocalDateTime dataExpira = LocalDateTime.parse(dados.get(JwtTokenHolder.EXPIRES).toString());
if (dataExpira == null) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
logger.warn("Token não possui data de expiração.");
return;
}
if (dataExpira.isBefore(LocalDateTime.now())) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
logger.warn("Token expirado.");
return;
}
Object userId = dados.get(JwtTokenHolder.USER_ID);
if (userId == null) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
logger.warn("Token não possui usuário.");
return;
}
Usuario usuario = usuarioRepository.findOne(userId.toString());
if (usuario == null) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
logger.warn("Usuário inválido.");
return;
}
String cnpj = dados.get(JwtTokenHolder.PRINCIPAL).toString();
Cliente cliente = clienteRepository.findByCgcent(cnpj);
if (cliente == null) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
logger.warn("Cliente não cadastrado: " + cnpj);
return;
}
SecurityContextHolder.getContext().setAuthentication(new UsuarioLogado(usuario));
} catch (Exception e) {
logger.error("Erro ao validar token", e);
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
filterChain.doFilter(servletRequest, servletResponse);
}