일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스파르타코딩클럽
- wil
- 컴퓨터개론
- 개발자스터디
- 운영체제
- 내일배움캠프
- 중심사회
- AWS
- til
- 프로그래머스
- 백준
- 소프트웨어
- 부트캠프
- 항해
- MySQL
- Spring
- 스파르타내일배움캠프TIL
- 개인공부
- 스파르타내일배움캠프WIL
- 컴퓨터구조론 5판
- 국비
- 99일지
- 스파르타내일배움캠프
- 코딩테스트
- Flutter
- 자바
- java
- 99클럽
- Python
- 개발자블로그
- Today
- Total
컴공생의 발자취
JWT가 뭐길래.. 본문
💡 오늘의 학습 키워드
- 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로 로그인 성공시
- 서버에서 "로그인 정보" -> JWT로 암호화(Secret Key 사용)
- 서버에서 직접 쿠키를 생성해 JWT를 담아 Client 응답에 전달
- 브라우저 쿠키 저장소에 자동으로 JWT 저장됨
2. Client에서 JWT 통해 인증방법
- 서버에서 API 요청 시마다 쿠키에 포함된 JWT를 찾아서 사용
* 쿠키에 담긴 정보가 여러 개일 수 있기 때문에 그 중 이름이 JWT가 담긴 쿠키의 이름과 동일한지 확인하여 JWT를 가져온다 - 서버에서
- Client가 전달한 JWT 위조 여부 검증(Secret Key 사용)
- JWT 유효기간이 지나지 않았는지 검증
- 검증 성공시 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 작성하고 시간이 남으면 내가 뭘 모르는지 정리해놓을 것이다.
그리고 오전 중에 시간이 될지 모르겠는데 튜터님께 한 번 찾아가봐야겠다. 이대로가 맞는 건지...
'📖 이론' 카테고리의 다른 글
쿠키와 세션 그리고 JWT(Token) (1) | 2024.05.31 |
---|---|
JWT(Cookie vs Header) (0) | 2024.05.29 |
쿠키-세션 방식과 JWT 기반 인증 (0) | 2024.05.21 |
웹개발 용어 정리 3 (1) | 2024.04.04 |
웹개발 용어 정리 2 (0) | 2024.03.31 |