Web Token이란?
Token의 네이버 사전 정의는 다음과 같습니다.
그렇다면 웹상에서의 토큰은 무엇일까요?
위의 사진에서 '징표로 하는'이라는 내용을 통해 유추할 수 있으실 텐데요.
웹 상에서의 토큰은 본인 확인의 수단으로 사용되는 징표입니다.
근데 이거 어디서 많이 본 방식이죠? 세션 방식의 인증을 사용하는 경우를 많이 생각하셨을 것 같습니다.
그렇다면 세션과 토큰의 차이는 무엇일까요?
세션 VS 토큰
위의 사진은 세션 인증 방식의 동작을 나타내는 것으로, 회원 정보가 담긴 데이터베이스를 거친 후 세션 ID가 저장되는 데이터베이스를 한 번 더 거치게 되는데요. 즉, Stateful(상태 유지)이라는 것이죠. 따라서 회원이 늘어날 때마다 메모리를 사용하며, 서버의 부하가 거칠 수 있습니다. 또한 서버 확장 시 세션을 공유하는 과정이 필요하기에 확장성이 낮다는 단점이 존재합니다. 하지만 세션 ID가 담긴 쿠키값을 탈취당하는 것이 아닌 이상 무작위 문자열로 생성되는 세션 ID를 유추할 수 없기 때문에 강력한 보안이 가능하며, 유저를 삭제시키거나 정지할 때 서버에서 세션에 대한 정보를 수정하여 유저 관리가 가능하다는 장점도 존재합니다. 그렇다면 토큰 방식은 어떨까요?
위의 사진은 토큰 인증 방식의 동작을 나타내며 회원 정보가 담긴 데이터베이스를 거친 후 별도의 데이터베이스를 거치지 않고 특정 문자열로 구성된 토큰을 부여하게 됩니다. 즉, Stateless(무상태)라는 것입니다. 때문에 메모리를 적게 사용하며, 서버의 부하가 세션 방식보다 비교적 적게 나타납니다. 또한 서버 확장 시 하나의 토큰으로 인증이 가능하기 때문에 확장성도 세션 방식보다 유연하다는 장점이 존재합니다. 하지만 유추 가능한 문자열로 구성된 토큰의 경우 토큰의 내용을 조작하여 인증 우회 또는 권한 상승을 할 수 있으며, 유저를 관리해야 할 때 토큰은 서버에서 관리되는 것이 아니기 때문에 특정 유저를 삭제시키거나 정지하는 등의 유저 관리를 할 수 없다는 단점도 존재합니다.
토큰의 종류
- JWT (JSON Web Token)
가장 널리 사용되는 웹 토큰 중 하나로, JSON 형식의 데이터를 Base64로 인코딩 되어 문자열로 전송되는 토큰입니다. - SAML (Security Assertion Markup Language)
XML 기반의 토큰으로 SSO(Single Sign-On) 및 권한 부여를 목적으로 사용됩니다. XML 형식이기 때문에 크기가 크다는 단점이 존재하지만 보안 수준이 높다는 장점도 존재합니다. - OAuth
Access Token과 Refresh Token을 사용하는 토큰으로 주로 권한 인증을 목적으로 사용됩니다.
'Web > 개발' 카테고리의 다른 글
JWT(JSON Web Token) PHP 로그인 구현 (0) | 2024.11.16 |
---|---|
JWT(JSON Web Token)란? (1) | 2024.11.15 |
Web Template Engine이란? (0) | 2024.10.24 |
API란? (0) | 2024.09.19 |