2026-06-11
## Spring Security JWT 인증 흐름
오늘은 ZeroVerse 프로젝트에서 Spring Security 기반 JWT 인증 흐름을 실습했다. 단순히 로그인 성공 여부만 응답하는 것은 “로그인 유지”가 아니다. 로그인 이후 다른 API에서 인증된 사용
자로 인식되려면 서버가 Access Token을 발급하고, 클라이언트가 이후 요청마다 Authorization 헤더에 토큰을 담아 보내야 한다.
```http
Authorization: Bearer <accessToken>
## 배운 점
UserDetailsService는 일반 비즈니스 서비스가 아니라 Spring Security가 로그인 검증 중 사용자 정보를 조회하기 위해 사용하는 인터페이스다. 반면 /api/v1/users/me 같은 내 정보 조회 API
는 일반 UserService로 구현하면 된다.
JWT 필터에서는 토큰을 검증한 뒤 SecurityContextHolder에 인증 객체를 넣는다.
new UsernamePasswordAuthenticationToken(
userId,
null,
List.of(new SimpleGrantedAuthority("ROLE_" + role))
);
여기서 principal은 사용자 식별자, credentials는 인증에 사용한 비밀값이다. JWT 검증이 끝난 뒤에는 비밀번호나 토큰 원문을 보관할 필요가 없으므로 credentials는 null로 둔다. 마지막
인자는 권한 목록이다.
doFilterInternal()은 현재 필터가 할 일을 작성하는 메서드이고, filterChain.doFilter(request, response)는 다음 필터 또는 Controller로 요청을 넘기는 역할이다.
댓글
댓글이 없습니다.
