Skip to content

Commit c1db021

Browse files
committed
fix: accessToken을 응답 본문(response body)으로 전달하고 Authorization 헤더에서 읽도록 수정
1 parent faa733c commit c1db021

2 files changed

Lines changed: 15 additions & 20 deletions

File tree

‎src/main/java/com/Timo/Timo/global/auth/handler/OAuthSuccessHandler.java‎

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
import com.Timo.Timo.global.auth.dto.CustomUserDetails;
44
import com.Timo.Timo.global.auth.service.RefreshTokenService;
55
import com.Timo.Timo.global.jwt.provider.JwtTokenProvider;
6+
import com.fasterxml.jackson.databind.ObjectMapper;
67
import jakarta.servlet.http.HttpServletRequest;
78
import jakarta.servlet.http.HttpServletResponse;
89
import java.io.IOException;
910
import java.time.Duration;
11+
import java.util.Map;
1012
import lombok.RequiredArgsConstructor;
1113
import org.springframework.beans.factory.annotation.Value;
12-
import org.springframework.http.HttpHeaders;
14+
import org.springframework.http.MediaType;
1315
import org.springframework.http.ResponseCookie;
1416
import org.springframework.security.core.Authentication;
1517
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
@@ -21,6 +23,7 @@ public class OAuthSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
2123

2224
private final JwtTokenProvider jwtTokenProvider;
2325
private final RefreshTokenService refreshTokenService;
26+
private final ObjectMapper objectMapper;
2427

2528
@Value("${app.oauth2.redirect-uri}")
2629
private String redirectUri;
@@ -43,24 +46,18 @@ public void onAuthenticationSuccess(
4346

4447
refreshTokenService.save(email, refreshToken);
4548

46-
ResponseCookie accessCookie = ResponseCookie.from("accessToken", accessToken)
47-
.httpOnly(true)
48-
.secure(cookieSecure)
49-
.path("/")
50-
.maxAge(Duration.ofSeconds(jwtTokenProvider.getAccessTokenExpiry()))
51-
.sameSite("Strict")
52-
.build();
53-
response.addHeader(HttpHeaders.SET_COOKIE, accessCookie.toString());
54-
5549
ResponseCookie refreshCookie = ResponseCookie.from("refreshToken", refreshToken)
5650
.httpOnly(true)
5751
.secure(cookieSecure)
5852
.path("/")
5953
.maxAge(Duration.ofSeconds(jwtTokenProvider.getRefreshTokenExpiry()))
6054
.sameSite("Strict")
6155
.build();
62-
response.addHeader(HttpHeaders.SET_COOKIE, refreshCookie.toString());
6356

64-
getRedirectStrategy().sendRedirect(request, response, redirectUri);
57+
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
58+
response.setCharacterEncoding("UTF-8");
59+
response.getWriter().write(
60+
objectMapper.writeValueAsString(Map.of("accessToken", accessToken))
61+
);
6562
}
6663
}

‎src/main/java/com/Timo/Timo/global/jwt/filter/JwtAuthenticationFilter.java‎

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,16 @@
55
import com.Timo.Timo.global.jwt.provider.JwtTokenProvider;
66
import jakarta.servlet.FilterChain;
77
import jakarta.servlet.ServletException;
8-
import jakarta.servlet.http.Cookie;
98
import jakarta.servlet.http.HttpServletRequest;
109
import jakarta.servlet.http.HttpServletResponse;
1110
import java.io.IOException;
12-
import java.util.Arrays;
1311
import java.util.Map;
1412
import lombok.RequiredArgsConstructor;
1513
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
1614
import org.springframework.security.core.context.SecurityContextHolder;
1715
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
1816
import org.springframework.stereotype.Component;
17+
import org.springframework.util.StringUtils;
1918
import org.springframework.web.filter.OncePerRequestFilter;
2019

2120
@Component
@@ -51,12 +50,11 @@ protected void doFilterInternal(
5150
}
5251

5352
private String resolveToken(HttpServletRequest request) {
54-
if (request.getCookies() == null) return null;
5553

56-
return Arrays.stream(request.getCookies())
57-
.filter(cookie -> "accessToken".equals(cookie.getName()))
58-
.map(Cookie::getValue)
59-
.findFirst()
60-
.orElse(null);
54+
String bearer = request.getHeader("Authorization");
55+
if (StringUtils.hasText(bearer) && bearer.startsWith("Bearer ")) {
56+
return bearer.substring(7);
57+
}
58+
return null;
6159
}
6260
}

0 commit comments

Comments
 (0)