inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Users Microservice - 인증기능 테스트

RemoveRequestHeader 이유

969

장원익

작성한 질문수 18

3

안녕하세요

1. RemoveRequestHeader 를 쓰는 이유가 매번 새롭게 요청받기 위함이라고 하셨는데, 매번 새롭게 요청받아야하는 이유가 무엇일까요?

2. 또한 만약 RemoveRequestHeader 가 존재하지 않는다면 어떻게 될까요?

3. Front 에서 Refresh_token을 httpOnly cookie에 담아서 보내는데 이 경우에는 RemoveRequestHeader 를 사용하지 않고싶다면 쓰지 않아도 될까요? 그로 인해서 발생하는 문제는 무엇일까요?

spring-boot architecture JPA spring-cloud Kafka msa

답변 1

5

Dowon Lee

안녕하세요, 이도원입니다.

Request Header에서 Cookie를 삭제하지 않으면, user-service와 같은 애플리케이션에서 Cookies를 추가하여 Response body에 저장된 정보가 있을 경우, Cookie가 계정 존재하게 됩니다. XSS 등의 공격이 될 수도 있습니다. 

    @GetMapping("/welcome")
@Timed(value="users.welcome", longTask = true)
public String welcome(HttpServletRequest request, HttpServletResponse response) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
Arrays.stream(cookies).forEach(cookie -> {
System.out.print(cookie.getName() + "=" + cookie.getValue());
});
}
Cookie c1 = new Cookie("myuser_token", "abcd1234");
response.addCookie(c1);

// return env.getProperty("greeting.message");
return greeting.getMessage();
}

위 화면에서 보시는 것처럼, Postman의 Cookies 탭에 user-service에서 저장한 쿠키 정보가 보입니다. (위 예제를 실행하기 위해, api-gateway에서 RemoveRequestHeader=Cookie를 적용하지 않았습니다)

반대로, RemoveRequestHeader=Cookie를 적용하게 되면, 같은 페이지를 요청하더라도 해당 Cookie 정보가 남아있지 않게 됩니다. 

답변1) "매번 새롭게 요청"이라는 의미는 쿠키 정보와 같이 Response Body에 어떤 정보도 남기지 않고, 새로운 Request Header로 요청한다는 의미입니다. 

답변2) 위에서 설명 드린바와 같이, 쿠키 정보가 남아 있을 수 있습니다. 

답변3) RemoveRequestHeader=Cookie 도 Optional 설정이기 때문에, 필요에 따라서 설정 하시면 될 것 같습니다. 이로 인한 문제점은, Cookie 정보의 악용이 있을수 있으며, 반대로, 매 요청 마다 쿠키를 삭제함으로써, 중요한 정보는 아니더라도, 간략한 Cookie 정보를 통해, 같은 요청을 전달해야 할 경우에도 매번 새로운 요청이 발생한다는 점이 될 것 같습니다. 

감사합니다. 

kafka 업데이트 강의 듣고 시포요

0

85

1

강의 교안

0

75

1

마이크로서비스간 통신 시, 인증 처리

0

79

1

api gateway 에서 인증 처리

0

66

1

섹션 19 질문드립니다

0

54

1

강의 자료 업데이트

0

84

1

부하분산 강의 섹션

0

57

1

강의자료는 어디에서?

0

72

1

강의 자료는 어디서 다운 받을 수 있나요?

0

110

1

전체 사용자 조회시 오류

0

59

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

113

2

학습 방향

0

95

2

카프카 커넥터 사용 목적 문의

0

86

2

kafka 강의

0

108

2

서비스 디스커버리 종류

0

87

2

강의 자료에 대해서 궁금해요

0

117

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

90

2

Kafka Source Connect 버전 에러

0

85

2

소스커넥터는 사용안한 거 맞죠?

0

81

2

강의자료 업데이트 문의

0

96

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

57

1

강의 업데이트 계획이 궁금합니다.

0

113

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

163

2

어떤 것이 업데이트 된 건가요?

0

164

2