✅ JWT 김수 설정 (JwtUtil.java)
JwtUtil 클래스는 개인 정보를 가지고 JWT 토큰을 생성, 검증, 추출하는 함수들을 관리합니다.
주요 기능:
- Access Token 개시 (5분)
- Refresh Token 개시 (10분)
- JWT 유효성 검증
- 검증 정보에서 개인 정보 추출
public String generateAccessToken(Long userId, String email, UserRole userRole) {
return BEARER_PREFIX +
Jwts.builder()
.setSubject(String.valueOf(userId))
.claim("email", email)
.claim("userRole", userRole)
.setExpiration(createExpireDate(ACCESS_TOKEN))
.signWith(signatureAlgorithm, createSigningKey(secretKey))
.compact();
}
- secretKey는 application.yml 또는 .properties에서 입력됩니다.
- 인증 불가 경우가 대단적으로 작성됩니다.
✅ 토큰 검증 필터 (JwtFilter.java)
JwtFilter는 시스템에 의해 사용자 요청을 처리할 때, 수정된 JWT가 전달되어오는지를 검증하고 검증 불가일 경우 에러를 리트레이터합니다.
if (bearerJwt == null) {
httpResponse.sendError(HttpServletResponse.SC_BAD_REQUEST, "JWT 토큰이 필요합니다.");
return;
}
if (!jwtUtil.isValidToken(token)) {
httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED, "유효하지 않은 JWT 토큰입니다.");
return;
}
✅ 조건 설정:
- /auth로 시작하는 건 인증 없이 pass
- 그 외 URL은 검증
✅ 구성 패턴
- 로그인 후 JwtUtil을 통해 access/refresh token 발행
- 필터 JwtFilter로 모든 요청에 대해 token 유효성 검증
- 유효한 경우만 다음 처리로 이동
✅ 오늘의 회고
- 내일은 Redis 설정 후. Refresh 토큰 저장 등을 해볼 것이다 !
'백엔드 부트캠프 > TIL' 카테고리의 다른 글
[내일배움캠프Spring-49일차] Redis 를 적용해보자 ! (0) | 2025.04.25 |
---|---|
[내일배움캠프Spring-48일차] Security + JWT (0) | 2025.04.24 |
[내일배움캠프Spring-46일차] 필터 vs 인터셉터 vs AOP (0) | 2025.04.22 |
[내일배움캠프Spring-45일차] Spring 심화 주차 개인 과제 (1) | 2025.04.21 |
[내일배움캠프Spring-44일차] TestCode (0) | 2025.04.18 |