토큰 기반 인증은 사용자 또는 장치의 ID를 확인하는 한 가지 방법입니다. 이 인증 방법은 문제의 엔터티가 이전에 발행된 토큰을 소유하고 있는지 확인하는 데 의존합니다.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
토큰 기반 인증은 토큰을 확인하여 ID를 확인하는 프로세스입니다.액세스 관리에서 서버는 토큰 인증을 사용하여 사용자, API, 컴퓨터, 다른 서버의 ID를 확인합니다.
토큰은 신뢰할 수 있는 출처에서 발급한 상징적인 품목입니다. 법 집행 요원이 소속 기관에서 발급한, 권한을 합법화해주는 배지를 휴대하는 것을 생각해 보세요. 토큰은 물리적(USB 하드 키와 같은) 또는 디지털(컴퓨터 생성 메시지 또는 디지털 서명) 형태일 수 있습니다.
토큰 기반 인증은 다음과 같은 몇 가지 다른 프로세스를 참조할 수 있습니다.
물리적 토큰을 통한 인증은 일반적으로 사용자 로그인 프로세스 중에 발생합니다. 사용자는 다른 사람은 아무도 가지고 있지 않은 품목을 소유하고 있음을 증명해야 합니다. 품목에 표시된 코드를 입력하거나 USB를 통해 품목을 장치에 연결하거나 블루투스를 통해 품목을 연결하는 등 여러 방법을 통해 이를 증명할 수 있습니다. 비밀번호를 입력하면 다른 사람이 가지고 있지 않은 지식을 사용자가 소유하고 있음을 증명하는 것과 마찬가지로 토큰을 사용하면 해당 사용자에게만 해당 품목이 있음을 증명할 수 있습니다.
이 유형의 인증에 사용되는 토큰에는 소프트 토큰과 하드 토큰의 두 가지 종류가 있습니다.
웹 토큰은 물리적 품목이 아니라 디지털입니다. 웹 토큰은 서버에서 클라이언트로 보내는 메시지이며, 클라이언트가 임시로 저장합니다. 클라이언트는 서버로 보내는 후속 요청에 토큰 사본을 포함하여 클라이언트의 인증 상태를 확인합니다.
물리적 토큰 인증은 로그인 과정에서 ID를 확인하는 반면, 웹 토큰은 로그인 성공의 결과로 발급됩니다. 둘은 로그인한 세션을 활성 상태로 유지합니다.
그러나 사용자 세션에 웹 토큰을 사용하는 것이 항상 이상적인 것은 아닙니다. 많은 개발자들이 대신 쿠키를 사용하는 것을 지지합니다. 웹 토큰은 API 엔드포인트 인증에 사용하거나 서버와 클라이언트 간의 연결이 아니라 서버 간의 연결을 확인하는 데 더 잘 사용할 수 있습니다.
웹 개발의 경우 "웹 토큰"은 거의 언제나 JSON 웹 토큰을 말합니다. JSON 웹 토큰(JWT)은 JSON(JavaScript Object Notation) 데이터를 포함하는 디지털 서명된 웹 토큰을 생성하기 위한 표준입니다. 서버는 클라이언트의 ID를 증명하는 토큰을 생성하여 클라이언트에게 보냅니다. JWT는 디지털 서명을 사용하여 토큰이 합법적임을 증명합니다.
JWT에는 다음과 같은 세 가지 구성 요소가 포함됩니다.
JWT는 때로는 사용자가 웹 애플리케이션에 로그인한 후 인증을 유지하는 데 사용되기도 합니다. 그러나 쿠키도 이러한 목적으로 사용될 수 있습니다.
쿠키는 작은 데이터 파일로, 서버에서 클라이언트로보냅니다. 사용자가 웹 애플리케이션에 로그인하면 서버에서 쿠키를 생성하여 클라이언트 장치(일반적으로 사용자의 컴퓨터 또는 스마트폰)로 보냅니다. 클라이언트 장치에서는 브라우저의 캐시 에 쿠키를 저장하고 JWT를 사용하는 방식과 유사하게 서버에 대한 향후 요청에 쿠키 사본을 포함합니다. 사용자가 로그아웃하면 브라우저는 쿠키를 삭제합니다.
쿠키는 JWT에 비해 파일 크기가 훨씬 작습니다. JWT에는 페이로드 외에 헤더와 디지털 서명이 포함되어 있기 때문입니다.이와는 대조적으로, 쿠키에는 페이로드만 포함됩니다.따라서 웹 성능과 대역폭 면에서 훨씬 더 효율적입니다.
JWT에는 콘텐츠가 변조되지 않았음을 보장하는 디지털 서명이 포함되기 때문에 성능에 최적화되어 있지 않습니다.그러나 웹 애플리케이션이 HTTPS를 사용하는 경우(당연한 일이지만) 쿠키는 어떻게든 변조되는 것을 방지해야 합니다.HTTPS는 클라이언트와 서버 간에 교환되는 다른 모든 HTTP 데이터와 함께 쿠키를 암호화하고 서명하며, 공격자는 경로상 공격을 수행하지 않는 한 전송 중에 쿠키를 위조하거나 가로챌 수 없습니다.
JWT는 API 및 서버 간 연결에 더 적합합니다.그러한 용도는 크게 확장할 필요가 없습니다. 웹 애플리케이션은 백만 명의 사용자를 확보할 수 있지만, 백만 개의 API 연결을 갖지는 않습니다.따라서 성능과 대역폭에 대한 잠재적인 영향이 줄어듭니다.그러나 상호 TLS와 같은 다른 인증 방법이 때로는 API에 더 효율적입니다. 상호 TLS에 대해 자세히 알아보세요.