토큰 기반 인증이란 사용자가 자신의 아이덴티티를 확인하고 고유한 액세스 토큰을 받을 수 있는 프로토콜을 말합니다. 사용자는 토큰 유효 기간 동안 동일한 웹페이지나 앱, 혹은 그 밖에 해당 토큰으로 보호를 받는 리소스로 돌아갈 때마다 자격 증명을 다시 입력할 필요 없이 토큰이 발급된 웹사이트나 앱에 액세스할 수 있습니다.
인증 토큰은 도장이 찍힌 티켓과 같습니다. 토큰이 유효하다면 사용자는 계속해서 액세스할 수 있습니다. 사용자가 로그아웃하거나 앱을 종료하면 토큰도 무효화됩니다.
토큰 기반 인증은 비밀번호 기반 또는 서버 기반 인증 기법과는 다릅니다. 토큰이 두 번째 보안 계층을 제공하여 관리자가 각 작업과 트랜잭션을 정밀하게 제어할 수 있습니다.
하지만 토큰을 사용하려면 약간의 코딩 노하우가 필요합니다. 개발자들은 대체로 이러한 기법을 빠르게 습득하지만 학습 곡선도 존재합니다.
그럼 이제 고객과 고객 기업별로 어떤 토큰이 적합한지 자세히 알아보겠습니다.
인증 토큰의 역사
인증과 인가 (권한 부여)는 서로 다른 개념이지만 연관성이 있습니다. 인증 토큰을 사용하기 전에는 비밀번호와 서버가 사용되었습니다. 기존 방식을 사용해 적합한 사람이 필요할 때 원하는 정보에 액세스했는지 확인해야 했지만 항상 효과적이지는 못했습니다.
비밀번호를 예로 들면, 일반적으로 다음과 같은 과정이 작용합니다.
- 사용자 생성. 문자, 숫자, 기호를 조합하여 비밀번호를 생성합니다.
- 기억. 고유한 비밀번호 조합을 항상 기억해야 합니다.
- 반복. 액세스가 필요할 때마다 비밀번호를 입력해야 합니다.
또한 유저들은 비밀번호를 일일이 다 기억하지 못하며, 다음과 같은 요령에 의지하는 경우가 많습니다.
- 비밀번호 기록. 비밀번호가 빼곡히 적힌 종이를 분실할 경우 보안 악몽이 시작됩니다.
- 비밀번호 재사용. 사람들은 동일한 비밀번호를 여러 계정에서 사용하는 경향이 있습니다. 따라서 한 개의 비밀번호가 분실될 경우 대부분의 계정이 취약해질 수 있습니다.
- 부분적인 비밀번호 변경. 사람들은 비밀번호를 업데이트해야 할 때 문자나 숫자를 하나만 변경합니다.
비밀번호 역시 서버 인증이 필요합니다. 사람들이 로그인할 때마다 컴퓨터가 트랜잭션 레코드를 생성하며, 결과적으로 메모리 부하가 증가합니다.
하지만 토큰 인증은 다릅니다.
토큰 인증 방식에서는 보조 서비스를 통해 서버 요청을 확인합니다. 확인이 완료되면 서버가 토큰을 발급하여 요청에 응답합니다.
사용자는 여전히 적어도 한 개의 비밀번호 를 기억해야 하지만 토큰이 액세스 계층을 하나 더 제공하기 때문에 도용하거나 침투하기가 훨씬 더 어렵습니다. 또한 세션 레코드가 서버에서 공간을 전혀 차지하지 않습니다.
세 가지 유형의 인증 토큰
모든 인증 토큰이 액세스를 허용하지만 각 유형마다 약간씩 차이가 있습니다.
일반적으로 다음과 같은 세 가지 유형의 인증 토큰이 사용됩니다.
- 연결형: 키, 디스크, 드라이브 및 기타 물리적 장치가 시스템에 연결되어 액세스를 허용합니다. USB 디바이스나 스마트카드를 사용해 시스템에 로그인한 경험이 있다면 연결식 토큰을 사용한 셈입니다.
- 비접촉형: 디바이스가 서버와 통신하려면 거리가 충분히 가까워야 하지만 연결할 필요는 없습니다. Microsoft의 "매직 링"이라고 하는 토큰이 여기에 해당합니다.
- 분리형: 디바이스가 다른 디바이스와 접촉하지 않고도 먼 거리에서 서버와 통신할 수 있습니다. 예를 들어 이중 요소 인증 프로세스에 휴대전화를 사용한 경험이 있다면 이러한 유형의 토큰을 사용한 셈입니다.
위의 세 가지 시나리오 모두 사용자가 무언가를 해야만 프로세스가 시작됩니다. 비밀번호를 입력해야 할 수도 있고, 혹은 질문에 답변해야 할 수도 있습니다. 하지만 예비 단계를 완벽하게 마쳤다고 해도 액세스 토큰이 없으면 액세스하지 못합니다.
4가지 단계의 간단한 토큰 인증 절차
토큰 기반 인증 시스템을 사용하면 방문자가 자격 증명을 한 번만 확인합니다. 자격 증명이 확인되면 토큰이 할당되어 정해진 시간 동안 액세스가 가능합니다.
프로세스는 다음과 같습니다.
- 요청: 사용자가 서버 또는 보호되는 리소스에 대한 액세스를 요청합니다. 이때 비밀번호를 이용한 로그인이나 그 밖에 지정된 프로세스가 개입될 수 있습니다.
- 확인: 서버가 해당 사용자의 액세스 여부를 확인합니다. 이때는 사용자 이름에 대한 비밀번호 확인 또는 그 밖에 지정된 프로세스가 개입됩니다.
- 토큰: 서버가 링, 키, 휴대전화와 등의 인증 디바이스와 통신합니다. 확인을 마치면 서버가 토큰을 발급하여 사용자에게 전달합니다.
- 저장: 작업이 지속되는 동안 토큰이 사용자의 브라우저에 저장됩니다.
사용자가 서버에서 다른 곳에 방문하려고 하면 토큰이 서버와 다시 통신합니다. 토큰에 따라 액세스가 허용되기도 하고 거부되기도 합니다.
관리자가 토큰에 대한 사용 제한을 설정하기도 합니다. 예를들어, 사용자가 로그아웃하 지정된 시간이 지나면 토큰이 자동으로 파기되도록 설정할 수 있습니다.