[데브코스] Spring Boot 인증·인가(Auth) (49강, 50강) - 로그인 시 쿠키 생성 + path=/, HttpOnly 설정

zuno·2026년 1월 19일

이번 강의에서는 로그인 성공 시 apiKey를 쿠키로 생성하고,
보안을 위해 path=/, HttpOnly=true 옵션을 추가하는 과정을 다룬다.

또한 테스트 코드와 Postman을 통해
쿠키가 실제로 생성되고, 응답에 포함되는지를 검증한다.


로그인 시 쿠키가 생성되는 흐름

로그인 컨트롤러 코드

@PostMapping("/login")
public RsData<MemberLoginResBody> login(
        @Valid @RequestBody MemberLoginReqBody reqBody
) {
    Member member = memberService.findByUsername(reqBody.username())
            .orElseThrow(() -> new ServiceException("401-1", "존재하지 않는 아이디입니다."));

    if (!member.getPassword().equals(reqBody.password()))
        throw new ServiceException("401-2", "비밀번호가 일치하지 않습니다.");

    // 로그인 성공 시 apiKey 쿠키 생성
    rq.setCookie("apiKey", member.getApiKey());

    return new RsData<>(
            "200-1",
            "%s님 환영합니다.".formatted(member.getName()),
            new MemberLoginResBody(
                    new MemberDto(member),
                    member.getApiKey()
            )
    );
}

✔ 로그인 성공 시 apiKey를 쿠키로 내려준다
✔ 동시에 응답 바디에도 apiKey가 포함되어 있다


쿠키 생성 로직을 Rq로 분리

Rq 클래스

public void setCookie(String name, String value) {
    Cookie cookie = new Cookie(name, value);

    cookie.setPath("/");       // 모든 경로에서 쿠키 전송
    cookie.setHttpOnly(true);  // 자바스크립트 접근 차단

    resp.addCookie(cookie);
}

설정된 옵션 의미

옵션의미
path=/모든 API 요청에 쿠키가 포함됨
HttpOnly=truedocument.cookie로 접근 불가
자동 전송fetch, form 요청 시 자동 포함

테스트 코드로 쿠키 검증

로그인 테스트에서 쿠키 검증 추가

resultActions.andExpect(
    result -> {
        Cookie apiKeyCookie = result.getResponse().getCookie("apiKey");

        assertThat(apiKeyCookie.getValue()).isEqualTo(member.getApiKey());
        assertThat(apiKeyCookie.getPath()).isEqualTo("/");
        assertThat(apiKeyCookie.isHttpOnly()).isTrue();
    }
);

✔ 쿠키 값이 apiKey와 동일한지
✔ path가 /인지
✔ HttpOnly가 true인지 검증


Postman에서 확인한 결과

1️⃣ 응답 헤더

  • 로그인 요청 성공 시
  • Set-Cookie 헤더가 응답에 포함됨
Set-Cookie: apiKey=xxxx-xxxx-xxxx

2️⃣ Cookies 탭

  • 해당 요청으로 생성된 쿠키 확인 가능
  • 주요 설정 값
항목
NameapiKey
Domainlocalhost
Path/
HttpOnlytrue
Securefalse
ExpiresSession

3️⃣ Cookies 버튼

  • Postman 우측 상단 Cookies 버튼 클릭
  • 현재 저장된 쿠키 목록 확인 가능
  • 안 보일 경우 팝업 닫았다가 다시 열면 표시됨

중요한 정리

로그인하면 무엇을 받는가?

✔ 응답 바디

  • member 정보
  • apiKey 값

✔ 응답 헤더

  • Set-Cookie 헤더
  • apiKey 쿠키 생성

쿠키와 apiKey 값은 동시에 내려온다


왜 이렇게 구성했는가?

  • 브라우저 환경
    → 쿠키 자동 전송 활용

  • 보안 강화
    → HttpOnly로 JS 접근 차단

  • 모든 API에 쿠키 포함
    → path=/ 설정


정리

  • 로그인 성공 시 apiKey 쿠키 생성
  • 쿠키 옵션
    • path=/
    • HttpOnly=true
  • 테스트 코드로 쿠키 생성 검증
  • Postman으로 실제 동작 확인 완료

50강: 이제 어떠한 요청이라도 apiKey 쿠키변수가 동행합니다.

0개의 댓글