학습 주제
JWT(JSON Web Token)를 사용하는 이유
JWT를 이용한 인증 방식
JWT 사용의 장점과 단점
토큰 방식과 세션 방식의 증명
JWT의 구성 요소
JWT 동작 방식
새롭게 배운 내용
2022.09.26 - [Back-End/Spring Security] - JWT 인증
보강할 내용
- JWT를 생성하는 과정에서 사용된 메서드
- JWT 생성 코드의 전체적인 흐름
회고
JWT에 대해 학습했다. JWT는 JSON Web Token의 약자이다. 우리가 아는 Token을 상상하면 이해하기가 쉽다. 콘서트장에서 티켓과 함께 본인 인증을 하면 팔찌를 얻는다. 입장할 때에는 이 팔찌를 내밀어서 내가 콘서트의 티켓이 있는 관람객이라는 것을 인증할 수 있게 된다!
세션 기반에서는 세션 ID로 서버에 인증을 하면 세션 정보를 가진 서버가 이를 비교하여 OK를 했었다. 서버가 사용자의 정보를 가지기 때문에 보안성은 좋지만 서버가 확장되면 모든 서버가 이 사용자 정보를 가지고 있어야(공유해야) 하기 때문에 문제가 된다. 또, 이 데이터의 양이 많다면 서버에 부담이 될 것이다.
토큰 기반은 서버가 사용자 정보를 가지지 않기 때문에 서버 확장성이 좋다. 단, 토큰 내 사용자 정보를 포함해서 세션 방식보다 많은 네트워크 트래픽을 사용하고, 서버에서 토큰을 관리하지 않기 때문에 보안 측면에서는 불리하다.
클라이언트가 로그인 시도를 하면 서버는 사용자 요청의 아이디와 비밀번호가 DB 데이터와 일치하는지 확인을 하고 암호화 된 토큰을 생성하여 전달한다. 클라이언트는 이를 저장해 두고 요청을 할 때마다 HTTP Header에 담아 전송한다. 서버는 Signature를 확인하고 Payload로부터 클라이언트 정보를 확인해서 응답을 보낸다!
JWT가 무엇인지, 사용자의 인증을 유지하는 방법에는 세션 방식과 토큰 방식이 있고 이 둘의 차이는 무엇인지, JWT 방식에서 인증을 하는 절차가 무엇인지를 이해했다. 토큰을 생성하는 코드에 대한 이해는 아직 부족하므로 내일 실습을 통해 보강해야겠다.
요즘 체력이 떨어진 것 같다는 생각이 든다. 그래서 주어진 시간을 효율적으로 사용하지 못했다. 시간 효율성을 위한 계획을 세워 보고 뜸했던 운동을 다시 시작해야겠다.
★★★☆☆
'Etc > BootCamp : TIL' 카테고리의 다른 글
[Day 98] OAuth2 인증 (0) | 2022.09.28 |
---|---|
[Day 97] Spring Security에서의 JWT(JSON Web Token) 인증 (0) | 2022.09.27 |
[Day 92] Spring Security 기본 Ⅱ (0) | 2022.09.22 |
[Day 91] Spring Security 기본 (0) | 2022.09.21 |
[Day 90] 인증 / 보안 (0) | 2022.09.20 |
댓글