토큰 기반 자격 증명

2023. 3. 20. 15:52Spring

◎ 토큰 기반 인증

-> 토큰 : 사용자를 인증하여 사용자에게 자격을 부여하고, 자격에 맞게 애플리케이션 리소스에 접근하도록 하는 것

 

◎ 토큰 기반 자격 증명 특징

-> 토큰에 포함된 인증된 사용자 정보는 서버에서 별도로 관리하지 않는다.

-> 생성된 토큰을 헤더에 포함하여 요청 전송 시 인증된 사용자인지 구분하는 용도로 사용된다

-> 토큰 내에 인증된 사용자 정보를 포함하고 있어, 세션에 비해 상대적으로 많은 네트워크 트래픽이 발생한다.

-> 서버에서 토큰을 관리하지 않기 때문에 보안성에서 좀 더 불리하다.

-> 인증된 사용자의 request 상태를 유지하지 않아도 되기 때문에 서버의 확장성에서 유리하고, *세션 불일치의 문제가 발생하지 않는다.

* 세션 불일치 : 다중 서버 환경에서 서버가 각각 세션 저장소를 독립적으로 가져 데이터가 불일치 하는 문제

-> 토큰에 포함되는 사용자의 정보는 암호화가 되지 않아 공격자에게 토큰을 탈취당할 경우 사용자의 정보가 그대로 노출이 된다. 따라서 토큰에는 민감한 정보를 포함하지 않아야 한다.

-> 토큰이 만료되기 전까지 토큰을 무효화시킬 수 없다.

-> CSR 방식의 애플리케이션에서 적합한 방식이다.

 

※ 토큰 기반 인증 왜 쓸까?

- 기존 세션 기반 인증은 서버에 유저 정보를 저장하는 방식이다. 유저가 요청을 보내면 해당 유저에게 데이터를 제공해도 되는지 세션 값을 비교한다. 매번 요청을 할 때마다 서버에서 세션 값을 비교해야 한다. 이 방식은 세션 데이터가 많아지면 서버에 부담이 커진다. 이를 줄이기 위해 인증된 사용자에게 토큰을 부여하고, 서버 측에서 관리하지 않는 토큰 방식을 사용하여 서버에 부담을 줄인다.

 

◎ 세션 기반 자격 증명 특징

-> 세션은 인증된 사용자 정보를 서버 측의 세션 저장소에 저장한다.

-> 생성된 사용자 세션의 고유 ID인 세션ID는 클라이언트의 쿠키에 저장되어 request 전송시 인증된 사용자인지 구분하는 역할로 사용한다.

-> 세션 ID만 클라이언트에서 사용하기 때문에 상대적으로 적은 네트워크 트래픽이 발생한다.

-> 서버 측에서 세션 정보를 관리하여 보안성에서 좀 더 유리하다.

-> 서버를 확장하여 다중 서버 환경이 되면 세션 불일치 문제가 발생할 수 있다.

-> 세션 데이터가 많아질수록 서버에서 관리하는 세션이 많아지기 때문에 서버에 부담이 커진다.

-> SSR 방식의 애플리케이션에 적합한 방싣이다.

 

'Spring' 카테고리의 다른 글

OAuth2  (0) 2023.03.28
JWT  (0) 2023.03.20
Spring Security의 권한 부여 처리 흐름  (0) 2023.03.17
Spring Security의 인증 처리 흐름  (0) 2023.03.16
Spring Security의 웹 요청 처리  (0) 2023.03.16