Skip to content

9주차 미션 [나루]#39

Open
yangjiae12 wants to merge 3 commits into
mainfrom
naru/week9
Open

9주차 미션 [나루]#39
yangjiae12 wants to merge 3 commits into
mainfrom
naru/week9

Conversation

@yangjiae12
Copy link
Copy Markdown
Member

🚩 관련 이슈

📌 구현 결과

1. JWT 기반 인증 구조 추가

  • JJWT 의존성을 추가하고, application.yml에 JWT 관련 설정을 추가했습니다.
  • JwtUtil을 통해 Access Token과 Refresh Token을 생성하도록 구현했습니다.
  • JwtAuthFilter를 추가하여 Authorization 헤더의 Bearer 토큰을 검증하도록 구현했습니다.
  • 유효한 토큰인 경우 SecurityContextHolder에 인증 객체를 저장하도록 처리했습니다.

2. 로그인 성공 시 JWT 토큰 반환

  • /auth/login JSON 로그인 API를 추가했습니다.
  • 기존 Spring Security 인증 흐름을 활용하기 위해 AuthenticationManager 기반으로 로그인 처리를 구현했습니다.
  • 로그인 성공 시 다음 정보를 응답하도록 구현했습니다.
    • grantType
    • accessToken
    • refreshToken
    • accessTokenExpiresIn
  • 기존 폼 로그인 /login 성공 응답에도 동일하게 JWT 토큰 정보가 포함되도록 수정했습니다.

3. 마이페이지 조회 API 개선

  • 기존에는 마이페이지 조회 시 userId를 직접 전달해야 했습니다.
  • 현재는 @AuthenticationPrincipal을 사용하여 인증된 사용자 정보를 가져오도록 수정했습니다.
  • 클라이언트는 Authorization: Bearer {accessToken} 헤더만 전달하면 본인의 마이페이지 정보를 조회할 수 있습니다.

4. 검증 결과

  • ./gradlew compileJava 실행 결과 정상적으로 빌드되는 것을 확인했습니다.
  • 로그인 성공 시 Access Token과 Refresh Token이 정상적으로 반환되는 것을 확인했습니다.
  • 발급받은 Access Token을 Authorization 헤더에 담아 마이페이지 API 요청 시 정상 응답을 확인했습니다.
image image image

❓ 리뷰 요청

  • JWT 인증 필터에서 토큰이 없거나 Bearer 형식이 아닌 경우 다음 필터로 넘기는 방식이 적절한지 확인 부탁드립니다.
  • Refresh Token은 현재 DB/Redis 저장 없이 단순 발급만 구현했습니다. 추후 재발급 API 구현 시 저장 방식이나 만료 관리 방식에 대해 피드백 부탁드립니다.
  • Access Token에는 role, authorities 정보를 포함하고, Refresh Token에는 최소 정보만 포함하도록 구현했는데 토큰 claim 구성이 적절한지 확인 부탁드립니다.
  • 기존 폼 로그인 /login과 JSON 로그인 /auth/login 모두 JWT 토큰을 반환하도록 구현했는데, 두 로그인 방식을 함께 유지하는 구조가 적절한지 의견 부탁드립니다.

🤔 질문

  • Refresh Token을 서버에서 관리할 때 DB와 Redis 중 어떤 방식을 선택하는 것이 더 적절할지 궁금합니다.
  • Access Token 만료 시점에 클라이언트가 재발급을 요청하도록 하기 위해 accessTokenExpiresIn을 응답에 포함했는데, 이 방식이 일반적인지 궁금합니다.
  • 현재는 Refresh Token 재발급 API까지는 구현하지 않았는데, 이후 /auth/reissue API를 추가할 때 어떤 예외 케이스를 우선적으로 고려해야 할지 궁금합니다.

💬 기타 공유 사항

  • JWT_SECRET_KEY는 환경변수로 관리하도록 설정했습니다.
  • 로컬 실행 시 IntelliJ 실행 설정의 Environment variables에 JWT_SECRET_KEY를 추가해야 정상 실행됩니다.
  • Refresh Token은 현재 단순 발급까지만 구현되어 있으며, 로그아웃 또는 토큰 재발급 기능은 추후 확장 예정입니다.

@yangjiae12 yangjiae12 linked an issue May 27, 2026 that may be closed by this pull request
5 tasks
@yangjiae12 yangjiae12 changed the title Naru/week9 9주차 미션 [나루] May 27, 2026
@yangjiae12 yangjiae12 self-assigned this May 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Mission] 9주차 미션

1 participant