JWT 인증 방식에 대해서 알아보기 전 알면 좋은 것들⬇⬇
https://narangcoding.tistory.com/207
[WEB] 인증방식 / Cookie / Session / Token
인증 로그인, 아이디와 패스워드 등을 통해 특정 서비스에 일정권한이 주어진 사용자임을 인증 받는 것 인가: 사용자가 한 번 인증을 받은 후에 그 사용자가 특정 리소스에 액세스할 수 있는지
narangcoding.tistory.com
JWT ( JSON Web Token) - 토큰 기반 인증 방식
JWT란 인증에 필요한 정보들을 암호화시킨 JSON토큰을 의미한다.
JWT 기반 인증은 JWT 토큰을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다.
JWT는 JSON 데이터를 Base64 URL-safe Encode를 통해 인코딩하여 직렬화한 것이며, 토큰 내부에는 위변조 방지를
위해 개인키를 통한 전자서명도 들어있다.
사용자가 JWT를 서버로 전송하면 서버는 서명을 검증하는 과정을 거치게되며 검증이 완료되면 요청한 응답을 돌려준다.
사용자가 로그인하면 토큰을 주는데, 이 토큰을 서버가 기억하고 있지 않는다.
stateless - 시간에 따라 바뀌는 상태값을 갖지 않는 것
구조
암호화된 Hear Payload Signature 3가지 데이터를 이어붙인 형태로 구성되어 있다.
세션을 대체하지는 못하는 이유
JWT는 세션처럼 모든 사용자들의 상태를 기억하고 있지 않는다.
따라서 기억하는 대상들의 상태를 언제든 제어할 수 있지 않다.
동작방식
1. 사용자가 로그인을 한다.
2. 서버에서는 계정정보를 읽어 사용자를 확인 후 사용자에게 고유한 ID 값을 부여하고 기타 정보와 함께 Payload에 넣는다.
3. JWT 토큰의 유효기간을 설정한다.
4. 암호화할 secret key를 이용해 access token을 발급한다.
5. 사용자는 Access Token을 받아 저장한 후, 인증이 필요한 요청마다 토큰을 헤더에 실어 보낸다.
6. 서버에서는 해당 토큰의 Verify Signature 를 secret key로 복호화한 후, 조작 여부, 유효기간을 확인한다.
7. 검증이 완료된다면 Payload를 디코딩하여 사용자의 ID에 맞는 데이터를 가져온다.
Q.
JWT가 무엇인가요?
A.
JWT는 토큰 기반 인증 방식으로 Header, Payload, Signature의 세 부분으로 이루어집니다. 인증에 필요한 정보들을 암호화 시킨 토큰을 뜻하며 세션/쿠키 방식과 유사하게 JWT토큰을 HTTP 헤더에 실어 서버로 보내게 됩니다.
사용자가 로그인하면 JWT 가 발급되며 사용자는 매 요청시 JWT를 들고다니며 인증된 상태를 유지합니다.
<심화>
JSON 형태는 각 부분은 Base64Url로 인코딩 되어 표현됩니다.
JWT는 인증정보가 되기 때문에 토큰을 필요이상으로 오래 들고있지 않는 것이 좋습니다.
https://tansfil.tistory.com/58?category=255594
쉽게 알아보는 서버 인증 1편(세션/쿠키 , JWT)
앱 개발을 처음 배우게 됐을 때, 각종 화면을 디자인해보면서 프론트엔드 개발에 큰 흥미가 생겼습니다. 한때 프론트엔드 개발자를 꿈꾸기도 했었죠(현실은 ...) 그러나 서버와 통신을 처음 배
tansfil.tistory.com
'IT정보 > 북마크털기 📚' 카테고리의 다른 글
[Spring] Spring Data JPA란? (0) | 2022.10.14 |
---|---|
[Java] 객체지향 5가지 설계 원칙 - SOLID (0) | 2022.10.12 |
[WEB] 인증방식 / Cookie / Session / Token (0) | 2022.10.10 |
[Java] 오버로딩 오버라이딩 차이 (0) | 2022.09.22 |
[북털] Spring VS Spring Boot (0) | 2022.08.23 |