일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 99클럽
- 중심사회
- 백준
- java
- 부트캠프
- 개인공부
- 항해
- 스파르타내일배움캠프WIL
- Python
- 내일배움캠프
- AWS
- 스파르타내일배움캠프TIL
- 스파르타코딩클럽
- 국비
- MySQL
- 자바
- 운영체제
- 개발자스터디
- 개발자블로그
- 소프트웨어
- 컴퓨터구조론 5판
- wil
- 컴퓨터개론
- Flutter
- 코딩테스트
- 99일지
- til
- Spring
- 스파르타내일배움캠프
- 프로그래머스
- Today
- Total
컴공생의 발자취
JWT(Cookie vs Header) 본문
💡 오늘의 학습 키워드
- 면담 -
jwt 구조와 JwtUtil
시크릿 키 & 퍼블릭 키
jwt의 인증 방식(Cookie vs Header)
jwt 구조와 JwtUtil
- 헤더 + 내용 + 서명 : .을 기준으로 나뉨
- 이걸 세팅 해놓은 게 JwtUtil
* Jwt는 보안상 사용한다!
But, 누구나 다 복호화하면 보안상 안 좋지 않나? -> 시크릿 키 & 퍼블릭 키
시크릿 키 & 퍼블릭 키
- 시크릿키 : 내가 만든 JWT만 볼 수 있다.
* 엄청 긴 스트링 이용 validate token - 퍼블릭키 : 무조건 볼 수 있고
jwt의 인증 방식(Cookie vs Header)
- Cookie : 서버가 JWT를 쿠키에 저장하여 클라이언트로 전송. 클라이언트는 자동으로 쿠키를 포함하여 요청.
- 장점 : 자동으로 쿠키를 전송하므로 클라이언트 측 코드가 간단해짐. XSS 공격 방지를 위해 HttpOnly 속성을 사용할 수 있음.
- 단점 :CSRF 공격에 취약할 수 있음. 이를 방지하기 위해 SameSite 속성이나 CSRF 토큰을 사용해야 함.
- 활용방안 : 웹 애플리케이션에서 사용자 세션 관리, 다양한 인증 및 권한 부여 시스템에서 사용
* 결론 : Cookie에 대해...
백엔드에서 브라우저에 뭘 넣는 것
특정 유저 브라우저를 판단하는 기준. 데이터를 쌓아 넣을 수 있다.
- Header : 클라이언트가 JWT를 로컬 저장소에 저장. HTTP 요청의 헤더에 JWT 토큰을 포함하여 전송하는 방식.
- 장점 : CSRF 공격에 덜 취약함. 클라이언트가 명시적으로 헤더에 JWT를 포함하므로 더 안전한 제어 가능.
- 단점 : 클라이언트 측 코드가 복잡해질 수 있음. JWT를 로컬 저장소에 저장할 때 XSS 공격에 노출될 수 있음.
- 활용 방안 : SPA(Single Page Application)에서 사용자 인증, RESTful API 서버에서 클라이언트 인증 및 권한 부여
* 결론 : Header에 대해...
하나의 HTTP call만 본다
헤더에 jwt를 넣는 것은 그 사람의 자유도를 인정
헤더에 넣어서 보내주세요(공지) 강제가 아니다!
Why? Header에 넣어서 많이 사용하는 이유?
쿠키에 넣는 건 우리가 그 사람꺼에 강제적으로 넣는 것. 즉, 백엔드가 쿠키를 다 관리.
그렇게 되면 서버에 부담이 커지기 때문.
- 인증 방식의 구체적인 흐름
- 요약된 흐름
- 클라이언트에서 서버로 가는 데이터
- 사용자 인증 정보 ex) 'username'과 'password'
- 보호된 자원 요청
- Cookie : 브라우저가 자동으로 포함하는 쿠키(JWT 포함)
- Header : HTTP 헤더에 포함된 JWT ex) 'Authorization' : Bearer <JWT>
- 서버에서 클라이언트로 가는 데이터
- 로그인 응답
- Cookie : 로그인 성공 메시지와 함께 설정된 쿠키(JWT 포함)
- Header : JWT 포함 ex) '{"token" : "<JWT>"}'
- 자원 제공 응답 : 보호된 자원 데이터
- 로그인 응답
오늘의 궁금증
- Q : PUT vs UPDATE vs PATCH ?
- Q : Cookie + JWT 같이 사용하는 이유?
면담
5단계를 진행함에 앞서서 jwt를 모르겠어서 튜터님을 찾아갔다.
jwt의 개념과 코드에서 어떻게 동작하는지를 들으면서 그때는 이해가 갔는데,..
생각해보면 왜 JWT를 Cookie에 넣어서 보내는지를 못 물어봤다. 지금은 그게 또 문제다.
그땐 Cookie도 잘 몰랐으니..
아무튼 jwt에 대해 듣고 jwt의 인증 방식 cookie와 header의 차이에 대해 간략하게 들었다.
그래서 header을 많이 사용하는데.. 나는 뭘 사용해야 하는지 지금 잘 모르겠다. 근데 일단 과제를 진행하려면..
Cookie를 사용하는 방식으로 하려고 하는데 또 계속 생각해보니 2주차 강의는 header 방식을 하는데 ..
2주차의 header은 spring security랑 연결되어 강의가 진행되서 spring security도 이해해야 되는 건가..
고민이 많다.
결론적으로 면담 이후 개인적으로 공부할 때 찾아보면 도움이 되는 키워드
: 웹 기초, response request 동작, 서블릿, 컨트롤러, jpa
오늘의 회고
- 12시간 중 얼마나 몰입했는가?
일단 기본적인 시간 제외(식사시간-2.5, 코드카타-1, 특강-1 : 총 4시간 30분)
그러면 7시간 30분이 남는데 저녁 시간은 전반적으로 집중을 못했으니 -1
오후에 JWT하다가 토큰, 세션, 쿠키, JWT 이거 뭔지 몰라서 쉰 것과 집중 못한 거.. -2
그러면 남는 시간이 4시간 30분이니까 그 만큼은 집중하지 않았을까?
- 오늘의 생각
오늘의 질문 내용과 Cookie vs Session vs Cookie-Session vs JWT 이렇게를..
모르겠다. 흐름도 어떤 차이가 있는지 잘 모르겠고 특히나 JWT면 JWT고 Cookie면 Cookie지!
왜 강의에서는 Cookie랑 JWT를 같이 사용하는거지? JWT를 Cookie에 담아서 주잖아?
왤까? 이유가 분명 있겠지 이제 그거 알아보러 갈거야.
- 내일 학습할 것은 무엇인지
바로 위에서 말한 Cookie vs Session vs Cookie-Session vs JWT 이것들의 차이랑
각각의 흐름? 그리고 JWT를 Cookie랑 같이 사용하는 이유? 일단 Cookie던 Header이던 같이 사용하잖아?
JWT 자체만으로는 사용이 불가능한 걸까? 아직 JWT를 이해를 못하는 걸까? 근본적인 걸 모르는 건지..
웹의 흐름 공부가 시급하다!
'📖 이론' 카테고리의 다른 글
쿠키와 세션 그리고 JWT(Token) (1) | 2024.05.31 |
---|---|
JWT가 뭐길래.. (1) | 2024.05.27 |
쿠키-세션 방식과 JWT 기반 인증 (0) | 2024.05.21 |
웹개발 용어 정리 3 (1) | 2024.04.04 |
웹개발 용어 정리 2 (0) | 2024.03.31 |