Refresh Token을 HTTP ONLY쿠키에 저장하기
2024. 7. 31. 20:42ㆍTIL
❎ 오늘의 진행상황
@RestController
@RequestMapping("/refresh-token")
class RefreshTokenController(
private val refreshTokenService: RefreshTokenService,
) {
@PostMapping
fun refreshAccessToken(
@RequestBody request: RefreshTokenRequest,
response: javax.servlet.http.HttpServletResponse
): ResponseEntity<TokenResponse> {
val tokenResponse = refreshTokenService.refreshAccessToken(request)
val refreshTokenHttpOnly = javax.servlet.http.Cookie("refreshToken", tokenResponse.refreshToken).apply {
isHttpOnly = true
secure = true
path = "/"
maxAge = 7 * 24 * 60 * 60
}
response.addCookie(refreshTokenHttpOnly)
return ResponseEntity.status(HttpStatus.OK).body(tokenResponse)
}
}
RefreshToken과 AccessToken을 클라이언트에게 전달해주며, RefreshToken의 경우에는 HttpOnly 쿠키에 저장하여 클라이언트 측에서는 JavaScript를 통해 토큰에 접근할 수 없기 때문에 XSS 공격자가 Refresh Token을 탈취하는 행위에서 보안이 강화된다.
javax.servlet.http.Cookie("refreshToken", tokenResponse.refreshToken).apply {
isHttpOnly = true // 요것이 httponly설정 javascript로 허튼짓을 못하게함
secure = true // HTTPS를 사용하는 경우 설정!!
path = "/" //쿠키가 웹사이트의 모든 경로에서 사용되게함
maxAge = 7 * 24 * 60 * 60 // 쿠키의 유효기간
}
'TIL' 카테고리의 다른 글
𝓒𝓢𝓡𝓕 (0) | 2024.08.02 |
---|---|
Տɑʍҽ ՏíԵҽ (0) | 2024.08.01 |
Refresh Token Redis로 저장하기 (0) | 2024.07.30 |
𝓡𝓮𝓯𝓻𝓮𝓼𝓱 𝓣𝓸𝓴𝓮𝓷 (0) | 2024.07.29 |
간단한 Debugging 사용법 (0) | 2024.07.28 |