
<기존 JWT>
JwtUtil(토큰 발급) 이후에
JwtFilter & FilterConfig(JWT 유저데이터추출/ request.setAttribute) ->
ArgumentResolver & WebConfig & Auth(어노테이션)
& AuthUser(dto) 클래스
(AuthUser 객체 생성/ request.getAttribute) ->
Controller로의 전달 과정이 필요하다.
<JWT Stateless Spring Security>
📌 의존성 추가(build.gradle - dependencies)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'
JwtUtil(토큰 발급)은 이후에
JwtFilter 대신 JwtAuthenticationFilter & SecurityConfig
(단, 다른 점은 시큐리티의 보안을 통과하기 위해 SecurityContextHolder.getContext().setAuthentication(authenticationToken); 가 추가)
authenticationToken이 필요하니 JwtAuthenticationToken 추가
AuthUser(dto) 클래스 그대로 사용 @AuthenticationPrincipal 사용(@Auth 안씀)
Controller로의 전달 과정이 필요하다.
▶ 코드의 동작 순서
1.사용자가 로그인 후 JWT를 발급받음
2.사용자는 JWT를 포함하여 요청을 보냄 (Authorization: Bearer <TOKEN>)
3.Spring Security의 JwtAuthenticationFilter가 요청을 가로챔
4.JWT를 검증하고, 사용자 정보를 SecurityContextHolder에 저장
5.요청이 컨트롤러로 전달되고, @AuthenticationPrincipal 등을 사용하여 인증된 사용자 정보를 활용
▶ 최종 동작 순서 정리
1.사용자가 로그인하면 JwtUtil.createToken()을 사용하여 JWT를 생성
2.클라이언트가 API 요청 시 Authorization: Bearer <TOKEN> 헤더를 포함하여 전송
3.Spring Security의 JwtAuthenticationFilter가 요청을 가로채고 JWT를 검증
4.JWT가 유효하면 SecurityContextHolder에 AuthUser 인증 정보 저장
5.컨트롤러에서 @AuthenticationPrincipal AuthUser authUser를 통해 인증 정보 활용
'개발 > 부트캠프' 카테고리의 다른 글
본캠프 : methodargumentnotvalidexception (0) | 2025.03.27 |
---|---|
본캠프 : 개인 과제(플러스 심화) 트러블 슈팅 (0) | 2025.03.20 |
본캠프 : JwtFilter - ArgumentResolver 실습 2(OncePerRequestFilter) (0) | 2025.03.14 |
본캠프 : QueryDSL (0) | 2025.03.13 |
본캠프 : 테이블 객체끼리 관계만들기 2 (0) | 2025.03.12 |