[Spring] React Front와 backend Jwt token 인증 실패

최성민·2021년 7월 22일
0

Spring

목록 보기
7/9

문제상황

프론트에서 state를 보면 토큰이 생성된 적이 없는데 '/user' 호출이후에 토큰을 유지하고 있음.
-> 해당 토큰은 내가 만든 토큰이 아님
-> 이전 프로젝트에서 사용된 jwt 암호화 key를 입력하니 복호화가 됨
-> 유효 기간이 한참이전의 토큰으로 복호화로 확인 가능

위의 .parseClaimsJws(token)에서 계속 error catch됨.

key의 문제가 있나싶어서 임의로 설정한 키대신 다른 백엔드 프로젝트에서 쓰는 키를 가져와봄

오잉? 만료 에러가 떴다
그런데 만료 날짜를 보니까 7월 5일 새벽3시다
기본적으로 24시간을 설정하니까 7월4일 새벽에 만들어진 토큰이고,
저 맘때쯤에는 내가 이미 구현된 프론트와 백엔드를 가져와서 테스트를 해본적이 있었다. 그리고 key값이 유효한걸보면 과거 백엔드 프로젝트에서 생성된 토큰이 아직 유지되는걸로 보인다

왜지??

-> 쿠키가 있어서 그랬던거같다
-> Cookie editor로 지우니까 괜찮아짐

그러더니 이제는 404 error가 뜸

찾아보니까 Not found....

value mapping을 "/users"로 해놨는데 /api/users로 고치니까 된다

탬플릿 코드에는 그냥 /users로 따라쳤는데 먼가 설정이 있었나??

prefix를 주면될거같은데 탬플릿코드에서는 그 흔적이 안보임

일단은 api까지 안오는 문제는 해결했고,

DB에 있는 계정으로 로그인하면 위와 같이 Object are not valid가 뜸

Bad Request의 이유가 Notvalidexception이 뜸

@Valid를 제거하고 디버깅해보니 위와 같이 Request에서 제대로 된 값이 넘어오지못하는 것을 확인.

request의 body를 가져오는건데 그러면 request자체가 안넘어오는걸까?

아니면 HttpMessageConverter가 문제일까?


json으로 넘어오는 값을 제대로 파싱을 못하는게 아닐까해서 user : {}이렇게 객체로 넘어오던거를 아래처럼 보내도록 수정해봤다

잘들어온다....

여태 검토해온 결과, 내가 requestbody를 잘못받아오는바람에 값들이 null로 왔고, @Valid에 의해서 걸러졌던건데 괜히 엄한데서 문제를 찾고있었다.

아래 파일에서 request로 넘어온 body를 파싱한다, targettype에는 @RequestBody가 붙은 변수타입이 들어가고, 거기에 맞는지 확인한 다음에 Binary buffer에서 파싱해서 입력된다.

org.springframework/spring-webmvc/5.3.8/2db116b30ba8031774c16492dca98a8080436ff3/spring-webmvc-5.3.8-sources.jar!/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodArgumentResolver.java:182

jwt토큰 인증이 제대로 되는지 안되는지는 다시 처음부터 봐야겠다

profile
공부합시다

0개의 댓글