개발공부

JWT란 무엇일까?

pumaclass 2024. 8. 19. 21:48

JWT는 Json Web Token의 약자로 디지털 서명된 정보 패키지 이다.

간단히 말해 사용자가 누구인지 또는 어떤 권한을 가지고 있는지 확인하는 디지털 신분등 같은것.

 

JWT는 세 부분으로 이루어져 있다.

1. Header(헤더) : 어떠한 알고리즘으로 서명했는지에 대한 정보가 들어있다.(예:HMAC, RSA)

2. Payload(페이로드) : 사용자에 대한 정보(claims라 불림)가 들어있다. 예를 들어 사용자 ID, 이름, 권한 등이 포함 될 수 있다.

3. Signature(서명) : 헤더와 페이로드를 비밀키로 암호화한 부분이다. 이 서명을 통해 데이터가 변조되지 않았다는 것을 확인할 수 있다.

 

JWT의 작동방식

1. 사용자가 로그인을 하면 서버는 JWT를 생성한다.

2. 해당 JWT는 서버에서 사용자의 브라우저나 클라이언트로 보내지고, 클라이언트는 이 토큰을 저장한다.

3. 클라이언트가 서버에 요청할 때마다 이 JWT를 함께 보낸다.

4. 서버는 이 JWT를 받아서 복호화하고, 그 안에 있는 정보를 사용하여 사용자를 인증하거나 권한을 확인한다.

 

JWT의 장점

1. 상태를 저장 할 필요 없음 : 서버는 사용자의 상태를 기억할 필요가 없다. 토큰에 모든 정보가 들어있기 때문에 서버는 이 토큰만 확인하면 된다.

 

2. 간편한 인증 : 서버에 매번 사용자 정보를 조회하지 않아도 토큰만으로 인증 할 수 있다.

 

예시

입장권에 서명과 사용자 정보가 담겨있어서, 그 입장권을 가진 사람은 계속해서 출입할 수 있는 것과 같다.

서명된 입장권은 위조할 수 없기 때문에 입장권을 확인하는 사람은 별도의 조회 없이 입장을 허용할 수 있다.

 

즉 JWT는 안전하고 간편하게 인증을 처리하기 위한 도구이다.