403 - Forbidden com JWT válido

7 respostas Resolvido
springspring-bootjava
L

Bom dia, pessoal

estou com uma api com Spring e autenticação JWT, meu programa está gerando o jwt certinho como deveria ser, mas ao acessar rotas que solicitam o token, me retorna sempre o 403. O estranho é que não estava ocorrendo isto uns dias atrás, e mesmo voltando a versão no git para o que eu estava, não estou mais conseguindo acessar nada. No debugger do JWT.IO mostra meus tokens gerados como válidos, normalmente.

Alguém ja passou por isso?

7 Respostas

L

Será que a assinatura do token está correta?

L

Então, no debugger do jwt.io ele me traz o token certinho. O estranho, que talvez possa ajudar a encontrar o problema, é que eu posso passar qualquer path que ele me dá o 403, ao invés do 404, por exemplo:

{
"timestamp": "2020-06-04T12:14:59.879+0000",
"status": 403,
"error": "Forbidden",
"message": "Access Denied",
"path": "/adicionarNotajkhjhmhkgjhgjhgggggggggggg"
}
L

Mesmo que os dados do token estejam certo, tem que ver se a assintura é válida. Veja se na página do jwt.io aparece Signature Verified ou Invalid Signature para o SECRET utilizado na aplicação.

L

Opa!

Então, assim que eu colo o meu token lá, ele fica com o invalid signature, mas ele espera que seja preenchido no campo “your-256-bit-secret”, certo? Quando eu preencho aí ele fica correto. É aí o erro?

Obrigado pelas respostas.

L

Se vc colocou o SECRET e a assinatura foi validada, blz. Era só para confirmar se esse não era o problema.

Bom, talvez tenha algo a ver com a roles. Tem que ver como que vc configurou seu projeto spring.

L

Dê uma olhada nesse tutorial: https://andreybleme.com/2017-04-01/autenticacao-com-jwt-no-spring-boot/

T
Solucao aceita

Resolveu?
quando eu coloquei a autenticacao via jwt na minha api foi a maior dor de cabeca. Esse problema ai do 403 é o cors. No meu caso eu fiz isso aqui e resolveu.

httpSecurity
		.cors() //o pulo do gato foi aqui.
		.and()
		.csrf().disable()
		.authorizeRequests().antMatchers("/authenticate").permitAll()
		.anyRequest().authenticated()
		.and()
		.exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint)
		.and()
		.sessionManagement()
		.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
Criado 4 de junho de 2020
Ultima resposta 17 de jun. de 2020
Respostas 7
Participantes 3