* 이전 포스팅에서 다루었던 JWT 토큰 설명을 참고해주세요
인증 시스템을 개발하면서 사용해야 할 기술을 정하는 중에 세션과 토큰 두개의 선택지가 있었습니다.
장점 | 단점 | |
세션 | - 서버에서 사용자 세션을 제어할 수 있다 | - 서버에서 사용자 세션 관리를 위한 자원소모가 크다. - 세션 유지로 인해 서버의 확장성에 제약이 생길 수 있다. |
토큰 | - 서버의 확장성에 제약이 없다. - 플랫폼간의 인증방식을 일관되게 관리할 수 있다. - 여러 서비스간의 통합 인증이 용이하다. |
- 토큰이 탈취되면 클라이언트의 연결을 제어할 수 없다. - 사용자 세션을 제어할 수 없다 |
저희는 '토큰' 기반으로 인증을 구현하기로 결정하였습니다.
'토큰' 기반의 장점과 단점을 고려하여 시스템 구현 방향을 설정하였습니다.
- KoLiving은 모바일에서도 제공하는 서비스입니다.
- 여러 플랫폼에서 같은 방식으로 인증을 처리할 수 있어 인증 메커니즘이 호환됩니다.
- 이는 플랫폼 별도로 인증 메커니즘을 구현하지 않아도 되는 이점을 가집니다.
- 서버의 확장성이 뛰어납니다.
- 세션 기반 인증은 Scale-Out 확장시에 복잡성이 증가할 수 있습니다.
- 토큰 기반 인증은 Scale-Out 확장시에 제약이 없어 명료하게 시스템이 구성됩니다.
- 토큰 탈취의 위험을 줄이도록 설계하였습니다.
- 토큰 탈취의 위험성을 고려하여 AccessToken 유효기간을 짧게 부여합니다.
- 악의적인 공격자의 AccessToken 재사용 방지를 위해 Black List 시스템을 운영합니다.
- RefreshToken Rotate 방식을 도입하여, 악의적인 공격자에게 RefreshToken이 탈취될 경우의 위험을 최소화합니다.
'Spring > Spring Security' 카테고리의 다른 글
[Spring Security][KoLiving] 4-2. JwtProvider (2) | 2023.10.03 |
---|---|
[Spring Security][KoLiving] 4-1. JwtAuthenticationFilter (0) | 2023.10.03 |
[JWT] 2. AccessToken과 RefreshToken (0) | 2023.10.03 |
[JWT] 1. JWT Token (0) | 2023.10.03 |
[Spring Security] 3-4. 인증: 로그아웃 (0) | 2023.10.03 |