JWT

곽태민·2023년 3월 24일
0

TIL

목록 보기
61/65

개요


사이드 프로젝트 개발을 하다가 Cookie, Session도 있는데 왜 굳이 JWT를 사용하는지 이걸 사용하면 어떻게 동작을 하는지 궁금해졌다.

여태 회사에서도 혼자서도 개발할 때 다 쓰니까 JWT를 썼던 거 같은데 이제 조금 개발에 대해서 알아야하는게 많아지다 보니 궁금해서 정리를 해보려고한다.

JWT


💡 JSON Web Token의 약자로 JSON 객체이며, 서로간에 안전하게 정보를 전송할 수 있고, 작고 독립적인 방법을 정의하는 공개 표준( RFC 7591 )이다.

JWT는 디지털로 서명이 되어있어서 검증되고 신뢰를 할 수 있다. JWT는 RSA, ECDSA를 사용하는 HMAC 알고리즘을 사용하고, 공용/ 개인 키 쌍을 사용해서 서명할 수 있다.

JWT는 서로 비밀 유지를 위해서 암호화가 되지만 서명된 Token에 중점을 둔다. 서명된 Token은 그 안에 포함이 된 클레임의 무결성을 검증할 수 있는데,

암호화된 Token은 다른 사람의 클레임은 숨긴다. Token이 공용/개인 키 쌍을 사용해서 서명이 된 경우에 서명은 개인 키를 보유한 당사자만 서명한 것을 증명한다.

위와 같이 JWT를 사용하면 작고 안전하게 정보를 전송할 수 있고, 서명된 Token에 중점을 두어서 비밀 유지를 할 수 있다. 그토큰 자체가 위 기능 수행을 할 수 있다.

JWT는 언제 사용하는지?


1. 로그인


사용자가 로그인을 하면 Server가 해당 유저 Token을 유저에게 전달한다. 유저가 요청하면 Token을 포함해서 전달하고, 서버는 해당 Token을 권한이 있는지 또한 유효하고 인증이 되었는지 확인 후 작업을 진행한다.

서버는 유저의 Session을 유지할 필요가 없다. 유저가 보낸 Token만 확인하면 되고, 서버의 자원을 아낄 수 있다.

2. 정보교류


JWT는 두 개체 사이에서 안정서있게 정보를 교환하기 좋은 방법으로 정보가 sign이 되어 있으면 정보를 보낸사람이 바뀌지 않았는지, 그 정보가 도중에 조작되어있진 않는지 검증을 할 수 있다.

JWT 동작원리


JWT 동작원리는

  1. 유저가 id와 password를 입력해서 로그인을 요청한다.
  2. Server는 회원DB에 들어가 있는 사용자인지 확인한다.
  3. 확인 후 Server는 로그인 요청을 확인 후에 secret key를 통해서 Token을 발급한다.
  4. 발급한 Token을 Client에 전달한다.
  5. 서비스 요청과 권한을 확인하기 위해서 Header에 데이터를 요청한다. (이 때 데이터 = JWT)
  6. 데이터를 확인하고 JWT에서 사용자 정보를 확인한다.
  7. Client 요청에 대한 응답과 함께 요청한 데이터를 전달한다.

위 동작 원리와 같이 Token 기반 인증 방식은 사용자의 인증이 완료된 이후 Token을 발급한다. Client쪽에서는 전달받은 Token을 저장해두고 Server에 요청을 할 때 해당 Token을 Server에 함께 전달한다.

그 후 Server는 Token을 검증하고 응답하는 방식으로 작동한다.

profile
Node.js 백엔드 개발자입니다!

0개의 댓글