강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

_만보님의 프로필 이미지
_만보

작성한 질문수

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

jwt토큰 관련해서 질문 드립니다.

작성

·

219

0

토큰을 로그인 발급한 후 header에 계속해서 유지하기 위해서는 어떻게 해야하나요?

한번 발급 후, 클라이언트에서 API를 호출하면 filter를 거치게 되는데 이 과정에서 header에 토큰이 없어 

"No authorization header" 라는 오류가 출력됩니다.  postman으로 토큰이 출력되는 것을 확인하였지만,

client부분에서 이를 확인하기 위해서 request.getHeader를 통해서 모든 헤더를 뽑아봐도 출력이 되지 않아 

이렇게 질문을 드립니다.

이상입니다.

답변 1

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

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

로그인 후 JWT를 생성하시고, 해당 JWT를 Reqeust Header에 저장하여 Client로 반환합니다. 그리고, Client에서는 로그인 요청 후 전달 받은 Response에서 Header에 저장된 JWT를 다시, 다음 번 Request 시 사용하시면 됩니다. 강의에서는 로그인 후 전달 받은 JWT를 다른 API 요청 시 Authorization에 지정하여 전달하고 있습니다. POSTMAN에서는 Authorization 메뉴에서 Bearer Token을 지정하였고, 일반 curl 명령어를 사용하실 경우에는 아래와 같이 지정하실 수 있습니다. 

curl --location --request GET 'localhost:8000/user-service/users' \
--header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1NTBkMGVhNi04ZD...'

감사합니다. 

 

_만보님의 프로필 이미지
_만보
질문자

response에 담은 토큰을 client에서 받아서 쓰려고 하면, reqesut.getHeader에서 해당 내용이 없는데 다른 방식이 있나요? gateway에서의 방식은 ServerHttpRequest가 reactive여서 .get(HttpHeaders.AUTHORIZATION).get(0)이 가능한데 reactive가 아닌 웹에서는 해당 함수가 없습니다. 

_만보님의 프로필 이미지
_만보

작성한 질문수

질문하기