|
9 | 9 | import com.example.be.repository.redis.RedisRefreshTokenRepository; |
10 | 10 | import com.example.be.repository.UserRepository; |
11 | 11 | import com.example.be.service.JwtUtilServiceImpl; |
12 | | -import jakarta.servlet.http.Cookie; |
13 | 12 | import jakarta.servlet.http.HttpServletRequest; |
14 | 13 | import jakarta.servlet.http.HttpServletResponse; |
15 | 14 | import lombok.RequiredArgsConstructor; |
|
21 | 20 | import org.springframework.stereotype.Component; |
22 | 21 |
|
23 | 22 | import java.io.IOException; |
24 | | -import java.net.URLEncoder; |
25 | 23 | import java.time.LocalDateTime; |
26 | 24 | import java.util.Map; |
27 | 25 | import java.util.UUID; |
@@ -113,25 +111,15 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo |
113 | 111 | // 액세스 토큰 발급 |
114 | 112 | String accessToken = jwtUtil.generateAccessToken(user.getUserId(), ACCESS_TOKEN_EXPIRATION_TIME); |
115 | 113 |
|
116 | | - // 쿠키에 액세스 토큰 추가 |
117 | | - Cookie accessTokenCookie = new Cookie("accessToken", accessToken); |
118 | | - accessTokenCookie.setHttpOnly(true); // JavaScript에서 접근 불가능하게 설정 |
119 | | - accessTokenCookie.setSecure(true); // HTTPS에서만 전송되도록 설정 |
120 | | - accessTokenCookie.setPath("/"); // 모든 경로에서 쿠키 접근 가능 |
121 | | - accessTokenCookie.setDomain(".studylink.store"); // 서브도메인 간 쿠키 공유 |
122 | | - accessTokenCookie.setMaxAge((int) (ACCESS_TOKEN_EXPIRATION_TIME / 1000)); // 밀리초를 초로 변환 |
123 | | - response.addCookie(accessTokenCookie); |
124 | | - |
125 | | - |
126 | | - // 쿠키에 리프레시 토큰 추가 |
127 | | - Cookie refreshTokenCookie = new Cookie("refreshToken", refreshToken); |
128 | | - refreshTokenCookie.setHttpOnly(true); |
129 | | - refreshTokenCookie.setSecure(true); |
130 | | - refreshTokenCookie.setPath("/"); |
131 | | - refreshTokenCookie.setDomain(".studylink.store"); // 서브도메인 간 쿠키 공유 |
132 | | - refreshTokenCookie.setMaxAge((int) (REFRESH_TOKEN_EXPIRATION_TIME / 1000)); |
133 | | - response.addCookie(refreshTokenCookie); |
134 | | - response.sendRedirect(REDIRECT_URI+provider); |
| 114 | + // Set-Cookie 헤더로 쿠키 설정 (Domain, SameSite 포함) |
| 115 | + response.addHeader("Set-Cookie", |
| 116 | + String.format("accessToken=%s; Path=/; Domain=.studylink.store; Max-Age=%d; HttpOnly; Secure; SameSite=None", |
| 117 | + accessToken, (int) (ACCESS_TOKEN_EXPIRATION_TIME / 1000))); |
| 118 | + response.addHeader("Set-Cookie", |
| 119 | + String.format("refreshToken=%s; Path=/; Domain=.studylink.store; Max-Age=%d; HttpOnly; Secure; SameSite=None", |
| 120 | + refreshToken, (int) (REFRESH_TOKEN_EXPIRATION_TIME / 1000))); |
| 121 | + |
| 122 | + response.sendRedirect(REDIRECT_URI + provider); |
135 | 123 |
|
136 | 124 | // // 이름, 액세스 토큰, 리프레쉬 토큰을 담아 리다이렉트 |
137 | 125 | // String encodedName = URLEncoder.encode(name, "UTF-8"); |
|
0 commit comments