我正在使用spring boot创建一个基于微服务的项目 . 我已经使用eureka服务器进行服务发现和注册,也使用JWT进行授权和身份验证的身份验证 . 每个微服务都有jwt验证,全局方法安全性在控制器上实现我使用假装客户端进行微服务间调用 .
服务 - 1)主要服务2)审批服务;
批准者服务正在调用主服务,用于调用只能由ADMIN访问的方法,但是当在主请求服务端处理jwt验证时,我只能看到 Headers 中的基本授权 Headers .
我在批准服务中从批准者服务Feign客户端传递JWT令牌
@FeignClient("MAINREQUESTSERVICE")
public interface MainRequestClient {
@RequestMapping(method=RequestMethod.POST, value="/rest/mainrequest/changestatus/{status}/id/{requestid}")
public String changeRequestStatus(@RequestHeader("Authorization") String token,@PathVariable("requestid")int requestid,@PathVariable("status") String status);
}
从请求中读取标头的代码
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest) req;
HttpServletResponse response=(HttpServletResponse) res;
String header = request.getHeader("Authorization");
System.out.println("header is "+header);
if (header == null || !header.startsWith("Bearer")) {
chain.doFilter(request, res);
return;
}
UsernamePasswordAuthenticationToken authentication = getAuthentication(request);
SecurityContextHolder.getContext().setAuthentication(authentication);
chain.doFilter(request, response);
}
调试此过滤器时,我已在控制台上打印令牌Header when debugged in main request service
那么可以获得如何将我的JWT令牌从一个微服务传递到另一个微服务的帮助?