컴공생의 발자취

[내일배움캠프 28일차 TIL] JWT가 뭐길래.. 본문

🤝 활동/내배캠TIL

[내일배움캠프 28일차 TIL] JWT가 뭐길래..

MNY 2024. 5. 27. 22:51
728x90
반응형
오늘의 진도 : Spring 숙련 주차 1주차 1-11 Spring Security 로그인까지...

오늘도 내가 강의를 들으면서 새롭게 알게된 것 그 동안 애매했던 것을 오늘의 학습으로 정리하려고 한다.
오늘의 학습, 코드카타, 오늘의 회고 이렇게 3개의 큰 틀로 나누어 정리할 것이다.

 

💡 오늘의 학습 키워드

- 1주차 -
JWT
JWT 장단점
JWT 사용 흐름
Spring Security
sout


 

JWT(Json Web Token)

: JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Client 기반의 Web Token.

* 일반적으로 쿠키 저장소를 사용하여 JWT를 저장

* 로그인 정보를 Server에 저장하지 않고 Client에 로그인 정보를 JWT로 암호화하여 저장

  • 모든 서버에서 동일한 Secret Key 소유
  • Secret Key를 통한 암호화/위조 검증(복호화 시)
  • 누구나 평문으로 복호화 가능
  • Secret Key가 없으면 JWT 수정 불가능 (Read Only)

 

JWT 장단점

  • 장점
    • 동시 접속자가 많을 때 서버 측 부하  낮춤
    • Client, Server가 다른 도메인을 사용할 때 
      ex) 카카오 Oauth2 로그인 시 JWT Token 사용
  • 단점
    • 구현의 복잡도 증가
    • JWT에 담는 내용이 커질 수록 네트워크 비용 증가(클라이언트 -> 서버)
    • 기 생성된 JWT를 일부만 만료시킬 방법이 없음
    • Secret Key 유출 시 JWT 조작 가능

 

JWT 사용 흐름

1. Client가 username, password로 로그인 성공시

  1. 서버에서 "로그인 정보" -> JWT로 암호화(Secret Key 사용)
  2. 서버에서 직접 쿠키를 생성해 JWT를 담아 Client 응답에 전달
  3. 브라우저 쿠키 저장소에 자동으로 JWT 저장됨

2. Client에서 JWT 통해 인증방법

  1. 서버에서 API 요청 시마다 쿠키에 포함된 JWT를 찾아서 사용
    * 쿠키에 담긴 정보가 여러 개일 수 있기 때문에 그 중 이름이 JWT가 담긴 쿠키의 이름과 동일한지 확인하여 JWT를 가져온다
  2. 서버에서
    1. Client가 전달한 JWT 위조 여부 검증(Secret Key 사용)
    2. JWT 유효기간이 지나지 않았는지 검증
    3. 검증 성공시 JWT에서 사용자 정보를 가져와 확인

 

Spring Security

  • 세션 방식으로 동작
  • 기본 default Login도 제공

 

sout

함수.sout

 

ex) System.out.println("user.getUsername() = " + user.getUsername());

 


코드 카타

* 프로그래머스로 진행

 

  • 알고리즘
    • 오늘은 없다...
  • SQL
    • 성분으로 구분한 아이스크림 총 주문량

 


오늘의 회고

  • 12시간 중 얼마나 몰입했는가?

오늘도 너무 피곤했다. 일단 날씨 탓을 해본다. 

내일은 덜 피곤해서 내가 공부해야 하는 걸 다 할 수 있기를 기대해본다!

피곤해서 점심도 못 먹고 잤음에도 계속 피곤했다. 

그래도 식사 시간에 잔 거니 한 8시간 정도는 몰입해서 공부했다고 생각한다.

 

  • 오늘의 생각

오늘 저녁 팀 회의에서 내가 지금 공부는 하고 있는데 이렇다고 설명해주니 그렇구나 하고 그냥 넘어가고 있어서 뭘 모르는지 아는지 모르겠다고 얘기했다. 그러다 어느 부분에 집중해서 공부해야 하는지 갈피도 못 잡고 있어서 팀에서 잘 하시는 분에게 여쭤보았다. 잘 설명해주셔서 적어놨다.

** 1주차 
빈 수동 등록
쿠키 세션 JWT 
-> 흐름 + 생성 배경 + 그래서 무엇을 하는가?
예의처리는 많이 해보기

** 2주차 
entity(다 : 다) 코드 직접 짤 수 있도록
orphan remove vs 영속성 전이(cascade)

 

  • 내일 학습할 것은 무엇인지

위에 작성해 놓은 부분들을 다시 공부할 예정이다.

오전 중에는 지난 과제를 수정해서 제출하는 과제이므로 

과제 시작 전 적당한 수정 과정을 거치려고 한다. 

 

오후의 대부분은 개인과제와 과제를 진행하면서 부족한 부분에 대한 공부를 다시 할 예정이다.

저녁 시간 이후는 팀원들과 간단한 회의 이후 TIL 작성하고 시간이 남으면 내가 뭘 모르는지 정리해놓을 것이다.

그리고 오전 중에 시간이 될지 모르겠는데 튜터님께 한 번 찾아가봐야겠다. 이대로가 맞는 건지...

728x90
반응형