2024. 8. 22. 15:21ㆍ[Spring_gradle]
사용자가 서버에 접근할 때 인증된 사용자인지 확인하는 방법 대표적으로 두가지가 있다. 서버 기반 인증, 토큰 기반 인증 이다.
스프링 시큐리티는 세션 기반 인증을 제공해준다. 사용자마다 사용자 정보를 담은 세션을 생성하고 저장해서 인증하는 방식이다.
토큰 기반 인증은 서버에서 토큰을 생성해 클라이언트에게 제공하며, 클라이언트는 받은 토큰을 갖고 있다가 작업을 요청할 때 토큰과 함께 신청한다. 이 때 서버는 토큰만 보고 유효한 사용자인지 검증해서 작업을 한다.
가장 큰 차이점은 서버에서의 역할이다. 서버에서 사용자 정보를 갖고 있는가(세션), 갖고 있지 않는가(토큰).
주요 차이점 요약:
- 서버 상태 유지: 세션 기반 인증에서는 서버가 클라이언트의 세션 상태를 유지하지만, 토큰 기반 인증에서는 서버가 클라이언트의 상태를 유지하지 않습니다.
- 확장성: 토큰 기반 인증은 서버가 상태를 유지하지 않기 때문에, 확장성과 분산 환경에서 더 유리합니다.
- 보안 관리: 세션 기반 인증에서는 서버에서 세션을 직접 관리하지만, 토큰 기반 인증에서는 클라이언트가 토큰을 관리합니다. 따라서 토큰의 보안 관리(예: 저장 위치, 전송 방식 등)에 주의해야 합니다.
- 상태 동기화: 세션 기반 인증은 상태 동기화가 필요할 수 있지만, 토큰 기반 인증에서는 필요하지 않습니다.
이번에 진행하는 프로젝트에서 두가지 인증 방식을 모두 적용하려고 하기에, 세션 기반 인증과 토큰 기반 인증이 실제로 어떻게 쓰이는지에 대해 알아보았다.
현대 웹 어플리케이션에서는 대게 두가지 인증방식이 모두 쓰인다고 한다. 그 이유는 보안을 강화하며 복잡성도 처리하기 위함이다.
두가지 인증 방식이 사용된 예시는 쇼핑몰 사이트 이다.
먼저 사용자는 로그인하여 세션을 받게 되고, 인증된 사용자로서 장바구니창 결제창 등에 접근할 수 있게 된다.
사용자가 "결제하기" 버튼을 클릭하면, API 서버로 결제 요청이 전송됩니다.
이때, 서버는 JWT와 같은 토큰을 사용해 사용자가 요청을 보낸 것이 맞는지 확인합니다. 토큰 기반 인증을 사용하여 추가적인 보안 계층을 제공합니다.
'[Spring_gradle]' 카테고리의 다른 글
HTTP 상태코드에 따른 요구사항 검증 (1) | 2024.11.14 |
---|---|
UserDetailsServiceImpl와 토큰 기반 인증의 차이점 (0) | 2024.11.14 |
[Spring Security] 개념부터 구현까지 (0) | 2024.08.21 |
[RDS DB] 연결 실패_timed out (0) | 2024.08.19 |
[API설계] DTO/ENTITY 차이 (0) | 2024.08.13 |