어제 목표 & 오늘 완료한 한 일
- 알고리즘 문제
- 자바 종합 문법 복습 (3주차)
- 스프링 숙련 강의 (2주차)
스프링 숙련 개인과제
내일 목표
- 알고리즘 문제
- 자바 종합 문법 복습 (3주차)
- 스프링 숙련 강의 (2주차)
- 스프링 숙련 개인과제
발생한 문제와 해결
1️⃣. 아래와 같은 에러가 발생했다. 해당 에러는 JWT가 JWT처럼 생기지 않아 발생하는 에러라고 한다.
Malformed JWT JSON
그래서 header에 넘어온 토큰을 확인해보니 Bearer 뒤에 공백이 있지 않아 발생하는 에러라고 판단되어 JwtUtil에서 BEARER_PREFIX를 보니 예상대로 "Bearer" 이렇게 공백이 포함되지 않은 채로 작성되어 있었다. 그래서 코드를 public static final String BEARER_PREFIX = "Bearer "; 이와 같이 변경해주었다.
2️⃣. 토큰이 검증된 것을 확인했는데도 불구하고 입력받은 title, contents가 DB에 들어가지 않고 403 에러가 발생하는 것을 확인할 수 있었다. 그런데 콘솔에 로그를 찍어본 결과 doFilterInternal() 메서드가 제대로 실행되는 것을 확인하였는데, 그 이후에는 오류도 발생하지 않고 아무런 결과가 나타나지 않는 상황.. 그래서 WebSecurityConfig의 securityFilterChain에서 해당 api를 permitAll()해보니 controller쪽으로 제대로 넘어가 DB에 저장되는 것까지 확인할 수 있었다. 그런데 authenticated()를 하게 되면 전과 같은 문제가 다시 발생.. 그래서 튜터님께 여쭤보러 갔는데 어쩌다보니 같이 공부하는 여러 분들과 알아본 결과, JwtAuthorizationFilter 클래스의 createAuthentication메서드에서 리턴해주는 UsernamePasswordAuthenticationToken에 인자를 2개만 넣어줘서 토큰이 인증되지 않은 것 처리되어 발생하는 문제였다. 3번째 인자에 null 값을 넣어주니 제대로 동작하는 것을 확인할 수 있었다.
🤔 UsernamePasswordAuthenticationToken 생성자가 2개의 인자를 받는 경우와 3개의 인자를 받는 경우는 뭐가 다를까❓
setAuthenticated에 false가 들어오게 되면 인증처리가 되지 않은 상태이고, true가 들어오게 되면 인증된 상태로 변경된다.
인자 2개받는 경우(Principal, Credentials)
: setAuthenticated() 기본적으로 false로 설정.
- 사용자의 인증 정보를 받아 인증을 처리하기 전 상황인 경우가 많기 때문이다.
인자 3개받는 경우(Principal, Credentials, Authorities)
: setAuthenticated() true로 설정
- 이미 인증이 완료되어 인증 정보와 권한 정보를 가지고 있는 경우가 많기 때문이다.
나는 인자를 2개 넣어줬기 때문에 setAuthenticated가 false로 설정되어 인증처리 되지 않아 다음 부분을 실행하지 못하고 403에러가 발생한 것이었다.
느낀점
위에서 언급했던 2번째 문제때문에 하루종일 다른 부분은 건드리지도 못하고 있었는데 오늘도 너무 감사하게도 다른 분들이 도와주셔서 빠르게 해결할 수 있었다. 그리고 그 뿐만 아니라 내가 작성한 코드가 안됐던 이유를 확실하게 알고 넘어갈 수 있었다! 이번주 한 주 목표가 일주일내내 알고리즘 문제 풀기였지만 오늘 하루종일 과제를 해결하느라 알고리즘 문제를 풀지못했다. 다음 주차때는 더 열심히 빨리빨리 해서 과제를 미리 끝내고 시간이 남아서 추가적으로 공부하는 게 내 목표다. 어제도 얘기했지만 나도 열심히해서 질문에 답변할 수 있을만한 실력을 가지고 싶다
'TIL & WIL' 카테고리의 다른 글
[TIL] #67. 231119 (0) | 2023.11.19 |
---|---|
[TIL] #66. 231118 (0) | 2023.11.19 |
[TIL] #64. 231116 (0) | 2023.11.16 |
[TIL] #63. 231115 (0) | 2023.11.15 |
[TIL] #62. 231114 (1) | 2023.11.14 |