컴퓨터 지식

[CS] JSON 웹 토큰 (JWT)

bornsoon 2024. 10. 27. 22:59

JSON 웹 토큰(JSON Web Token, JWT)은 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준으로,
페이로드는 몇몇 클레임(clain) 표명( asswer)을 처리하는 JSON을 보관하고 있다.
토큰은 비공개 시크릿 키 또는 공개/비공개 키를 사용하여 서명된다.
이를테면 서버는 "관리자로 로그인됨"이라는 클레임이 있는 토큰을 생성하여 이를 클라이언트에 제공할 수 있다.
그러면 클라이언트는 해당 토큰을 사용하여 관리자로 로그인됨을 증명한다.
이 토큰들은 한쪽 당사자의 비공개 키(일반적으로 서버의 비공개 키)에 의해 서명이 가능하며 이로써 해당 당사자는 최종적으로 토큰이 적법한지를 확인할 수 있다.
[출저] 위키백과

JWT와 세션은 둘 다 클라이언트를 식별할 때 사용되는데 가장 큰 차이점은
세션은 사용자를 식별할 수 있는 값인 세션 ID를 생성하고 서버 세션 저장소를 저장한다. 따라서 동시 접속자가 많을 경우 서버 부하가 심해질 우려가 있다.
하지만 JWT는 인증 정보를 서버에 별도로 저장하지 않아서 동시 접속자가 많을 경우에 서버 부하를 낮출 수 있다. 하지만 구현 복잡도가 높고 Secret Key 유출 시 JWT 조작이 가능하고, 페이로드 자체가 암호화되지 않기 때문에 사용자의 중요 정보는 담을 수 없다.


728x90