[Spring] JWT 인증(Authentication) 개요
학습 목표
- 인증된 사용자인지를 증명하는 토큰 방식과 세션 방식의 차이점을 설명할 수 있다.
- JWT(JSON Web Token)가 무엇인지 설명할 수 있다.
- JWT의 구성 요소를 설명할 수 있다.
- JWT의 동작 방식을 이해할 수 있다.
👨💻
- 토큰을 클라이언트에 저장하는것이 괜찮을까?
토큰은 유저 정보를 암호화 한 상태로 담을 수 있고, 암호화했기 때문에 클라이언트에 담을 수 있다.
JWT란?
Json Web Token의 약자로
Json 포맷으로 사용자에게 대한 속성을 저장하는 웹 토큰임.
JWT의 구조
AAA. / BBB. / CCC
[Header] / [Payload] / [Signature]
Header:
- 어떤 종류의 토큰인가?
- 어떤 알고리즘으로 암호화 하는가?
Payload
- 유저의 정보
- 권한을 부여 받았는가?
- 기타 필요한 정보
Signature
- Header, Payload를 base64인 코딩한 값과, salt값의 조합으로 암호화된 값.
토큰 기반 인증의 장점?
- Statelessness & Scalability (무상태성, 확장성)
-
서버는 클라이언트에 대한 정보를 저장할 필요가 없다.
-
토큰을 헤더에 추가함으로 인증 절차 완료
-
- 안정성
- 암호화 한 토큰을 사용
- 암호화 키를 노출할 필요가 없다.
- 어디서나 생성 가능
- 토큰을 생성하는 서버가 꼭 토큰을 만들지 않아도 된다.
- 토큰을 생성하는 서버가 꼭 토큰을 만들지 않아도 된다.
- 권한 부여에 용이
- 토큰의 payload(내용물) 안에 어떤 정보에 접근 가능한지 정의
- ex) 사진과 연락처 사용권한 부여/ 사진권한만 부여 / 연락처 권한만 부여
댓글남기기