IT 개발노트

인증 방식의 종류 본문

인증

인증 방식의 종류

limsungju 2022. 8. 26. 13:42

1. 세션 기반 인증
세션 기반 인증에서는 로그인한 사용자의 상태 정보를 서버 단의 저장소에 세션의 형태로 저장한다. 그리고 클라이언트가 세션 ID를 쿠키로 서버에 전송하면, 서버는 해당 세션 ID를 이용하여 적절한 세션을 탐색함으로써 해당 사용자가 이미 로그인을 한 상태인지, 그렇다면 요청된 기능을 사용할 권한이 있는지 검증한다. 이것이 곧 인가 과정이다.

1-1. 세션 기반 인증의 장점
세션 기반 인증의 가장 큰 장점은 로그인한 사용자의 상태 정보를 서버 단에 저장하기에 상대적으로 안전하다는 것이다. 보안은 서버가 클라이언트보다 튼튼하기 때문이다. 또한, 로그인한 사용자의 상태 정보를 서버 단에서 유연하게 관리 가능하다. 만약 누군가의 세션 ID가 탈취되었다면, 서버는 해당 세션을 폭파시키기만 하면 된다. 그러면 더 이상 탈취된 세션 ID를 가지고 아무것도 할 수 없다.

1-2. 세션 기반 인증의 단점
반면, 세션 기반 인증은 여러 가지 단점들도 갖는다. 먼저, 로그인한 사용자의 상태 정보를 서버 단에 저장하기에 여러 사용자들이 동시에 많이 접속하면 서버 단의 저장소에 오버헤드가 심해질 수 있다. 또한, 세션을 저장하는 저장소에 문제가 생겨서 세션들이 전부 날아가면, 로그인한 사용자들은 전부 다시 로그인을 해야 한다. 이는 세션을 메모리형 저장소에 저장할 때 쉽게 생길 수 있는 문제인데, 그렇다고 해서 세션을 데이터베이스나 하드디스크 등에 저장하면 매번 수행하는 읽기 연산이 매우 부담될 것이다. 마지막으로, 여러 대의 서버들로 운영되는 웹사이트의 경우 세션을 반드시 공용 저장소에 저장해야 한다. 서버별로 존재하는 저장소에 저장하면, 한 서버에서 로그인을 해도 다른 서버에서는 로그인되지 않은 상태로 인식하기 때문이다. 이렇듯, 복잡한 구성과 환경에서 로그인한 사용자의 상태 정보를 기억해야 한다는 것 자체가 세션 기반 인증의 치명적인 단점이 된다.


2. 토큰 기반 인증
토큰 기반 인증에서는 로그인한 사용자의 상태 정보를 클라이언트 단의 저장소(쿠키, 로컬 스토리지, 세션 스토리지 중 하나)에 토큰의 형태로 저장한다. 그리고 클라이언트가 토큰을 서버에 전송하면, 서버는 해당 토큰에 담긴 정보를 이용하여 해당 사용자가 이미 로그인을 한 상태인지, 그렇다면 요청된 기능을 사용할 권한이 있는지 검증한다. 이것이 곧 인가 과정이다. JWT는 토큰 기반 인증에서 사용하는 토큰의 한 종류이다.

2-1. 토큰 기반 인증의 장점
토큰 기반 인증의 장점은 곧, 위에서 설명한 세션 기반 인증의 단점들이 없다는 것이다. 즉, 로그인한 사용자의 상태 정보를 애초에 서버 단에 저장하지 않기에 서버 단 저장소의 오버헤드를 신경 쓸 필요 없으며, 복잡한 구성과 환경에서 로그인한 사용자의 상태 정보를 기억해야 하는 부담도 없으니 서버 확장에 훨씬 유리하다.

2-2-2. 토큰 기반 인증의 단점
그러나 토큰 기반 인증도 단점이 없는 것은 아니다. 서버를 대신해서 클라이언트가 로그인한 사용자의 상태 정보를 기억하는 것이기 때문에, 토큰 자체에 로그인한 사용자의 상태 정보가 담겨 있다. 따라서 상대적으로 서버보다 보안이 튼튼하지 못한 클라이언트에서 토큰이 탈취당하면 몇몇 개인정보까지 탈취당할 위험이 있다. 더군다나, 세션 기반 인증과 달리 서버는 이미 한 번 발급한 토큰을 무효화시킬 방법이 없기 때문에 탈취된 토큰은 그 유효 기한이 지나기 전까지 마음껏 사용할 수 있다.

'인증' 카테고리의 다른 글

OpenID Connect 란?  (0) 2022.08.26
OAuth 2.0 이란?  (0) 2022.08.26