localhost 브라우저에서 쿠키 제대로 받기
JWT로 인증한다고 하자.
@PostMapping("/login")
public ResponseEntity<LoginResponse> login(@RequestBody LoginRequest request, HttpServletResponse response) {
AuthToken authToken = authService.login(request);
ResponseCookie cookie = ResponseCookie.from("refreshToken", authToken.refreshToken())
.httpOnly(true)
.secure(true)
.path("/")
.maxAge(refreshExpirationMillis / 1000)
.sameSite("None")
.build();
response.addHeader("Set-Cookie", cookie.toString());
return ResponseEntity.ok(new LoginResponse(authToken.accessToken()));
}
스프링에서는 로그인 성공했을때 리프레쉬 토큰을 쿠키로 반환해주는데 http로 로컬호스트 띄우면 브라우저가 저걸 거절함 -_-
secure속성이랑 sameSite 속성 계속 바꿔가면서 테스트 해 봤는데 크롬브라우저가 https가 아니면 아예 받아주지를 않음.
그렇다고 그냥 https 만 적용하면 되는것도 아님; Not Secure 옵션도 같이 확인해줘야 함.
백, 프론트 둘 다 https로 배포해야됨.
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import path from "path";
import mkcert from "vite-plugin-mkcert";
// https://vite.dev/config/
export default defineConfig({
resolve: {
alias: {
"@": path.resolve(__dirname, "src"),
},
},
plugins: [mkcert(), react()],
server: {
host: "localhost",
port: 5173,
},
});
Vite로 리액트 설정해줬으니 vite-plugin-mkcert로 개발환경 https를 날먹하자.
keytool -genkeypair \\n -alias local-ssl \\n -keyalg RSA \\n -storetype PKCS12 \\n -keystore keystore.p12 \\n -validity 365 \\n -storepass password \\n -dname "CN=localhost, OU=Dev, O=Company, L=City, ST=State, C=KR"\n
mkcert -pkcs12 localhost
mkcert -install
스프링부트에서는 mkcert 사용했음. localhost 전용 인증서 붙이기.
server:
port: 8443
ssl:
enabled: true
key-store: classpath:localhost.p12
key-store-password: changeit
key-store-type: PKCS12
keytool로 인증서 만들면 콘솔에 초기비번 changeit으로 뜬다. yml에 그대로 적용해주자.
둘 다 https 제대로 적용해줬으니 쿠키 받는지 확인
반응형
'Solutions' 카테고리의 다른 글
[SQL Server] 암호화 된 View 다루기 (1) | 2025.01.03 |
---|---|
[MySQL] WITH RECURSIVE 계층 쿼리 (0) | 2024.12.13 |
[Nginx] 리버스 프록시 서버 구축 (1) | 2024.11.13 |
[Tomcat] 네트워크 드라이브 권한 관련 오류 (0) | 2024.11.09 |
[PDF.js] PDF.js 완벽 가이드 (3) | 2024.11.07 |
댓글
이 글 공유하기
다른 글
-
[SQL Server] 암호화 된 View 다루기
[SQL Server] 암호화 된 View 다루기
2025.01.03 -
[MySQL] WITH RECURSIVE 계층 쿼리
[MySQL] WITH RECURSIVE 계층 쿼리
2024.12.13 -
[Nginx] 리버스 프록시 서버 구축
[Nginx] 리버스 프록시 서버 구축
2024.11.13 -
[Tomcat] 네트워크 드라이브 권한 관련 오류
[Tomcat] 네트워크 드라이브 권한 관련 오류
2024.11.09