2022. 11. 27. 15:17ㆍ스파르타코딩(22.8.29~22.12.31)/TIL(Today I Learned)
- Today I Learned
이전에 가볍지만 보안에 취약한 쿠키 / 많으면 서버에 부하가 가는 세션에 대해 알아보았었다.
이 둘을 보완한 토큰방식(그 중에서 JWT토큰에 대해 알아보려고 한다.)
- Token 이란?
- 사용자가 아이디와 비밀번호로 로그인을 한다.
- 서버 측에서 사용자(클라이언트)에게유일한 토큰을 발급한다.
- 클라이언트는 서버 측에서 전달받은 토큰을 쿠키나 스토리지에 저장해 두고,
서버에 요청을 할 때마다 해당 토큰을 서버HTTP 요청 헤더에 포함시켜 전달한다. - 서버는 전달받은 토큰을 검증하고 요청에 응답한다.
토큰에는 요청한 사람의 정보가 담겨있기에 서버는 DB를 조회하지 않고 누가 요청하는지 알 수 있다.
토큰 기반 인증 시스템은 클라이언트가 서버에 접속을 하면
서버에서 해당 클라이언트에게 인증되었다는 의미로 '토큰'을 부여한다.
이 토큰은 유일하며 토큰을 발급받은 클라이언트는 또 다시 서버에 요청을 보낼 때 요청 헤더에 토큰을 심어서 보낸다.
서버에서는 클라이언트로부터 받은 토큰을 서버에서 제공한 토큰과의 일치 여부를 체크하여 인증 과정을 처리하게 된다.
- Token 방식의 특징(장점)
기존의 세션기반 인증은 서버가 파일이나 데이터베이스에 세션정보를 가지고 있어야 하고
이를 조회하는 과정이 필요하기 때문에 많은 오버헤드가 발생한다.
*오버헤드(overhead)는 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다.
하지만 토큰은 세션과는 달리 서버가 아닌 클라이언트에 저장되기 때문에
메모리나 스토리지 등을 통해 세션을 관리했던 서버의 부담을 덜 수 있다.
토큰 자체에 데이터가 들어있기 때문에 클라이언트에서 받아 위조되었는지 판별만 하면 되기 떄문이다.
토큰은 앱과 서버가 통신 및 인증할때 가장 많이 사용된다.
왜냐하면 웹에는 쿠키와 세션이 있지만 앱에서는 없기 때문이다.
- Token 방식의 단점
- 쿠키/세션과 다르게 토큰 자체의 데이터 길이가 길어, 인증 요청이 많아질수록 네트워크 부하가 심해질수 있다.
- Payload 자체는 암호화되지 않기 때문에 유저의 중요한 정보는 담을 수 없다.
*payload 더보기 ↓
더보기페이로드(payload)는 전송되는 데이터를 의미합니다.
데이터를 전송할때, 헤더와 메타데이터, 에러 체크 비트 등과 같은 다양한 요소들을 함께 보내어, 데이터 전송의 효율과 안정성을 높히게 됩니다.
이 때, 보내고자 하는데이터자체를 의미하는 것이 바로 페이로드입니다. - 토큰을 탈취당하면 대처하기 어렵다. (따라서 사용 기간 제한을 설정하는 식으로 극복한다)
여러 토큰중 JWT TOKEN을 알아보자.
- JWT (JSON Web Token) TOKEN 란?
JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다.
JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다.
JWT는 JSON 데이터를 Base64 URL-safe Encode 를 통해 인코딩하여 직렬화한 것이며,
토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자서명도 들어있다.
JWT 인증 과정
1.사용자가 2.JWT 를 서버로 전송하면 3.서버는 서명을 검증하는 과정을 거치게 되며,
4.검증이 완료되면 요청한 응답을 돌려준다.
'스파르타코딩(22.8.29~22.12.31) > TIL(Today I Learned)' 카테고리의 다른 글
[TIL] Simple JWT setting , encoded 22/11/22 17일차 (0) | 2022.11.29 |
---|---|
[TIL] JWT 구조와 Access Token / Refresh Token 뜻,과정22/11/21 16일차 (0) | 2022.11.28 |
[TIL] Cookie VS Session, 웹 스토리지 22/11/17 14일차 (0) | 2022.11.27 |
[TIL] REST / REST API / RESTful이란? 22/11/16 13일차 (0) | 2022.11.25 |
[TIL] 관계형 Model (1 대 1,Many Field) 22/11/15 12일차 미완 (0) | 2022.11.17 |