이 영역을 누르면 첫 페이지로 이동
시간의화살 블로그의 첫 페이지로 이동

시간의화살

페이지 맨 위로 올라가기

시간의화살

행복하세요

localhost 브라우저에서 쿠키 제대로 받기

  • 2025.06.25 12:10
  • Solutions

 

 

 

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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [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
다른 글 더 둘러보기

정보

시간의화살 블로그의 첫 페이지로 이동

시간의화살

  • 시간의화살의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (609)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • Java (19)
      • JavaScript (15)
      • C (25)
      • C++ (12)
      • Python (1)
      • PHP (2)
    • Computer Science (69)
      • Operating System (18)
      • Computer Network (17)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Github Actions (0)
      • Amazon Web Service (8)
    • Machine Learning (28)
      • AI Introduction (28)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • Solutions (14)
    • Life Logs (2)
    • 낙서장 (25)

최근 글

나의 외부 링크

메뉴

  • 홈

정보

13months의 시간의화살

시간의화살

13months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © 13months.

티스토리툴바