기존 filter를 이용한 현재 로그인 정보를 이용하여 webClient 호출 시 로그인 할 때 webClient를 사용하는 경우, 현재 로그인 정보가 없기 때문에 에러 발생
기존 코드 일부
private ExchangeFilterFunction authorizationHeaderFilter() {
return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
User
↔ Auth
도메인 사이의 webclient 내부 요청은 기존 로그인 정보가 존재 Xwebclient config
return WebClient.builder()
.baseUrl("<http://localhost:8080>") // 기본 URL 설정
.clientConnector(new ReactorClientHttpConnector(httpClient))
.defaultHeader("WebclientInternal", passwordEncoder.encode(webSecretKey))
.build();
websecretkey
를 이용하여 Header에 삽입JwtFilter
String key = request.getHeader("WebclientInternal");
if (passwordEncoder.matches(webSecretKey, testKey)) {
log.info("내부 webClient 호출 성공");
// webClient 용 내부 인증 객체 생성
Authentication webclientAuth = new UsernamePasswordAuthenticationToken(
"webclient-internal",
null,
List.of(new SimpleGrantedAuthority("ROLE_WEBCLIENT"))
);
SecurityContextHolder.getContext().setAuthentication(webclientAuth);
filterChain.doFilter(request, response);
return;
}