-
[Spring] Spring Security + JWT 로그인 구현하기 - 1Spring 2023. 6. 14. 20:19
📝 지난 포스팅
➡︎ JWT(Json Web Token) 란?
🔎 Session vs Token
사용자 인증 방식은 일반적으로 세션 기반 방식과 토큰 기반 방식(JWT)으로 나뉜다.
두 방식은 어느 것이 더 뛰어나다고 하긴 애매하고, 각 방식의 장단점과 요구사항을 분석하여 상황에 맞게 결정하는 것이 좋다.
(두 방식의 차이점 추후 포스팅 예정)
지난번에 진행했던 사이드 프로젝트에서는 로그인 기능을 구현했을 때 세션을 사용했었지만
회의를 통해 이번 프로젝트에서는 확장성을 고려하여 JWT를 써보기로 결정했다.
최근에 OAuth 인증 방식이 많이 활용되면서 확장성이 높은 토큰 방식의 장점이 더욱 부각된다고 한다!
우선 이 포스팅에서는 Spring Security + JWT로 로그인을 진행할 때의 동작 원리를 알아보고자 한다.
🔎 Authentication(인증)과 Authorization(권한 부여)
🖤 Authentication(인증)
➡︎ 로그인과 같이 사용자 또는 프로세스의 신원을 확인하는 프로세스
🖤 Authorization(권한 부여)
➡︎ 누가 무엇을 할 수 있는지 결정하는 규칙
🔎 Spring Security + JWT 동작 원리
- 클라이언트에서 서버로 ID/PW로 로그인을 요청한다.
- 서버에서 검증 과정을 거쳐 해당 유저가 존재하면, Access Token + Refresh Token 을 발급한다.
- 클라이언트는 요청 헤더에 2번에서 발급받은 Access Token 을 포함하여 API를 요청한다.
여기에서 Access Token과 Refresh Token은 웹 ・ 앱 어플리케이션에서 인증 및 권한 부여를 관리하기 위해 사용되는 토큰이다.
🖤 Access Token
➡︎ 인증된 사용자가 특정 리소스에 접근할 때 사용되는 토큰
- 클라이언트는 Access Token을 사용하여 인증된 사용자의 신원을 확인하고, 서비스 또는 리소스에 접근
- 유효 기간이 지나면 만료 (expired)
- 만료된 경우, 새로운 Access Token을 얻기 위해 Refresh Token 사용
🖤 Refresh Token
➡︎ Access Token의 갱신을 위해 사용되는 토큰
- 일반적으로 Access Token과 함께 발급
- Access Token이 만료되면 Refresh Token을 사용하여 새로운 Access Token 발급
- 사용자가 지속적으로 인증 상태를 유지할 수 있도록 도와줌 (매번 로그인 다시 하지 않아도 됨)
- 보안 상의 이유로 Access Token보다 긴 유효 기간 가짐
📝 이어지는 포스팅
➡︎ Spring Security + JWT 로그인 구현하기 - 2
728x90'Spring' 카테고리의 다른 글
[Spring] Spring Security + JWT 로그인 구현하기 - 3 (0) 2023.06.15 [Spring] Spring Security + JWT 로그인 구현하기 - 2 (17) 2023.06.15 [Spring] JWT(Json Web Token)란? | 구조, 암호화 방법, 장단점 (0) 2023.06.14 [Spring] 테스트 코드에서의 @Transactional 사용 (0) 2023.05.30 [Spring] 네이버 도서 검색 API 활용하기 (0) 2023.04.22