Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Duda] Error 403 forbidden al tratar de obtener el token

Vi que alguien mas tenía la misma duda pero no está resuelta aun.

@Component
public class SecurityFilter extends OncePerRequestFilter {

    @Autowired
    private TokenService tokenService;
    @Autowired
    private UsuarioRepository usuarioRepository;

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        // Obtener el token del header
        var authHeader = request.getHeader("Authorization");
        if (authHeader != null) {
            var token = authHeader.replace("Bearer ", "");
            var nombreUsuario = tokenService.getSubject(token); // extract username
            if (nombreUsuario != null) {
                // Token valido
                var usuario = usuarioRepository.findByLogin(nombreUsuario);
                var authentication = new UsernamePasswordAuthenticationToken(usuario, null,
                        usuario.getAuthorities()); // Forzamos un inicio de sesion
                SecurityContextHolder.getContext().setAuthentication(authentication);
            }
        }
        filterChain.doFilter(request, response);
    }
}

La linea de codigo donde aparece filterChain.doFilter(request, response); lo tiene dentro del if y en insomnia muesta 200 solmante sin mostrar el token pero luego el lo saca del if y ahi si le muestra el toke PERO A MI NOOO me muesta un error 403 y no me explico porque.

Intenté terminar el curso pese a lo sucedido para ver si en algun punto el error se arreglaba pero no se arreglo y sigo sin poder resolverlo.

En los logs del programa me aparece esto:

2023-10-01T19:11:47.741+09:00  WARN 15892 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'application/octet-stream' is not supported]

Intenté buscar en internet pero no pude resolver mi duda.

De antemano, gracias.

1 respuesta
solución!

Hola Saul,

Por lo que veo, este error generalmente significa que el servidor entendió la solicitud, pero se niega a autorizarla.

Primero, asegúrate de que estás enviando el token correcto en la cabecera de la solicitud. El token debe ser válido y estar asociado a un usuario con los permisos necesarios para realizar la acción que estás intentando.

En tu código, veo que estás obteniendo el token del header "Authorization". Asegúrate de que estás enviando este header con tu solicitud y que el valor del token es correcto.

Por otro lado, el error que aparece en los logs indica que hay un problema con el tipo de contenido de la solicitud. El error HttpMediaTypeNotSupportedException: Content-Type 'application/octet-stream' is not supported significa que estás enviando datos en un formato que el servidor no puede entender.

En este caso, parece que estás enviando datos en formato 'application/octet-stream', que no es un formato que Spring Boot pueda manejar por defecto. Si estás intentando enviar datos JSON, asegúrate de que el Content-Type de la solicitud es 'application/json'.

Espero que estas sugerencias te ayuden a resolver el problema. Si después de probar estas soluciones sigues teniendo el mismo error, podría ser útil revisar la configuración de seguridad de tu aplicación y asegurarte de que todo está configurado correctamente.

Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios