Session과 Token 로그인 인증 차이
- IT
- 2023. 6. 11.
세션 기반 인증과 토큰 기반 인증은 웹 및 API 인증에서 자주 사용되는 방법입니다. 두 방법은 서버가 사용자를 인증하는 방식과 클라이언트가 인증을 요청하는 방식에 차이가 있습니다. 이런 차이로 인해 각각 더 적합한 상황에 활용됩니다.
Session
세션 기반 인증은 사용자가 로그인한 후 서버 측에서 사용자의 세션을 관리합니다. 또 해당 세션에 대한 식별자를 사용자의 브라우저 쿠키(Cookie)로 저장합니다. 사용자가 다시 페이지를 방문할 때마다, 이 쿠키는 서버에 전송되어 사용자가 인증된 사용자임을 확인합니다. 다만 이 방식은 세션 정보를 서버에 저장해야 하기 때문에 많은 사용자가 있으면 그만큼 부하가 커질 수 있습니다.
세션 기반 로그인 인증 예시)
1. 사용자가 ID와 비밀번호를 입력하여 로그인을 시도합니다.
2. 서버는 이 정보를 확인하고, 맞으면 사용자에게 해당하는 세션을 생성합니다. 그리고 이 세션에 대한 식별자를 쿠키로 사용자의 브라우저에 전송합니다.
3. 사용자가 다른 페이지로 이동하거나 새로운 요청을 보낼 때마다, 브라우저는 이 쿠키를 자동으로 서버에 전송합니다.
4. 서버는 이 쿠키를 통해 세션을 조회하고, 이 사용자가 이미 로그인했음을 확인합니다.
즉, 세션은 쿠키를 통한 인증입니다. 브라우저에서 쿠키를 삭제하면 더 이상 서버는 해당 사용자를 인식할 수 없습니다. 사용자가 웹 사이트에서 로그아웃을 하면 서버는 해당 세션을 파기하고 클라이언트는 쿠키를 삭제합니다. 다시 로그인하려면 계정 인증을 다시 거치고 새로운 세션과 쿠키가 생성되어야 합니다.
Token
토큰 기반 인증에서는 서버는 로그인이 인증된 후에 사용자에게 토큰을 발급합니다. 이 토큰은 사용자 측에 저장되며, 유효기간이 있습니다. 이때부터는 사용자가 요청을 할 때마다 토큰을 헤더에 첨부해서 서버에 전송합니다. 서버는 토큰을 검증하여 인증된 사용자임을 확인합니다. 서버는 세션 정보를 저장할 필요가 없으므로 동시 연결에 대한 부하가 덜합니다.
토큰 기반 로그인 인증 예시)
1. 사용자가 ID와 비밀번호를 입력하여 로그인을 시도합니다.
2. 서버는 정보를 확인하고 맞으면 사용자를 위한 토큰을 생성합니다. 이 토큰은 사용자의 정보와 서버의 서명이 포함되어 있습니다.
3. 서버는 생성한 토큰을 응답으로 사용자에게 전송합니다. 사용자의 클라이언트는 이 토큰을 저장합니다.
이때 보통 웹 브라우저의 로컬 스토리지에 저장하게 됩니다. 로컬 스토리지는 브라우저를 통해 사용자의 컴퓨터에 데이터를 저장할 수 있게 해주는 기능입니다. 쿠키와 비슷해 보이지만, 쿠키는 브라우저에 저장되는 반면 토큰은 웹 스토리지나 메모리 등에 저장될 수 있다는 차이가 있습니다. 이를 사용하면 웹 페이지가 로딩되는 동안 또는 사용자가 웹사이트를 나가거나 컴퓨터를 재부팅해도 데이터를 유지할 수 있습니다.
4. 사용자가 다른 페이지로 이동하거나 새로운 요청을 보낼 때마다 클라이언트는 저장한 토큰을 요청 헤더에 첨부하여 서버에 전송합니다.
5. 서버는 받은 토큰을 검증하고 토큰이 유효하면 요청을 처리하고 토큰이 유효하지 않으면 인증 에러를 반환합니다.
각각의 사용처
일반적으로 세션 기반 인증 방식은 웹 애플리케이션 로그인에 널리 사용됩니다. 이는 웹 애플리케이션에서 사용자의 상태를 유지하려는 목적에 부합하기 때문입니다. 사용자가 로그인하면 서버는 해당 사용자의 세션을 생성하고, 그 세션의 ID를 쿠키에 저장하여 클라이언트에게 보냅니다. 이후에 사용자가 웹사이트를 탐색하면서 서버에 요청을 보낼 때마다 쿠키에 담긴 세션 ID를 통해 서버는 사용자를 인식하고 상태를 유지할 수 있습니다.
반면 토큰은 크로스 도메인 요청 같은 서버 간 연결에 주로 사용되곤합니다. 쿠키는 크로스 도메인 요청이 정책 상 제한되지만 토큰은 HTTP 헤더에 포함되어 명시적으로 전송할 수 있습니다. 그래서 토큰 기반 인증은 API와 어울립니다. 예를 들어 애플리케이션 A에서 로그인을 하면 애플리케이션 B에 자동으로 로그인하는 연동을 구현한다고 하면, A에서 B로 사용자의 토큰을 던져서 인증하는 방식을 떠올릴 수 있습니다.
'IT' 카테고리의 다른 글
맥북 m1 한영 전환 딜레이 없애는 방법 (Karabiner) (0) | 2023.06.12 |
---|---|
서버 PM(Preventive Maintenance) 작업이란? (0) | 2023.06.11 |
데이터 웨어하우스(DW)란? 통합 분석 (0) | 2023.06.10 |
SHA256 해시 값을 저장하는 방식 이해하기 (0) | 2023.06.09 |
앱 연동 관점에서 URL SCHEME이란? (0) | 2023.06.07 |