항해
JWT
갈매끼
2022. 5. 31. 13:30
- 서버가 1대인 경우
- Session1 이 모든 Client 의 로그인 정보 소유
2. 서버가 2대이상인 경우
- 서버의 대용량 트래픽 처리를 위해 서버 2대 이상 운영 필요
- Session 마다 다른 Client 로그인 정보를 가지고 있을 수 있음
- Session1: Client1, Client2, Client3
- Session2: Client4
- Session3: Client5, Client6
- Client 1 로그인 정보를 가지고 있지 않은 Sever2 나 Server3 에 API 요청을 하게되면 어떻하지?
- 해결방법
- Sticky Session: Client 마다 요청 Server 고정
- 세션 저장소 생성
- 해결방법
- Session storage 가 모든 Client 의 로그인 정보 소유
4. JWT 사용
- 로그인 정보를 Server 에 저장하지 않고, Client 에 로그인정보를 JWT 로 암호화하여 저장 → JWT 통해 인증/인가
- 모든 서버에서 동일한 Secret Key 소유
- Secret Key 통한 암호화 / 위조 검증 (복호화 시)
- JWT 장/단점
- 장점
- 동시 접속자가 많을 때 서버 측 부하 낮춤
- Client, Sever 가 다른 도메인을 사용할 때
- 예) 카카오 OAuth2 로그인 시 JWT Token 사용
- 단점
- 구현의 복잡도 증가
- JWT 에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)
- 기생성된 JWT 를 일부만 만료시킬 방법이 없음
- Secret key 유출 시 JWT 조작 가능
- 로그인 정보를 Server 에 저장하지 않고, Client 에 로그인정보를 JWT 로 암호화하여 저장 → JWT 통해 인증/인가
- 장점