【发布时间】:2018-09-12 12:53:24
【问题描述】:
我正在使用 Spring Boot 创建一个基于微服务的项目。 我使用 eureka 服务器进行服务发现和注册,还使用 JWT 进行身份验证以进行授权和身份验证。 每个微服务都有 jwt 验证,并且在控制器上实现了全局方法安全性 我正在使用 feign 客户端进行微服务间调用。
服务 - 1)主要请求服务 2)审批服务;
审批者服务正在调用主服务以调用只能由 ADMIN 访问的方法 但是当在主请求服务端处理 jwt 验证时..我只能在 Headers 中看到基本授权标头。
我正在从我的审批者服务传递 JWT 令牌 在approverservice中伪装客户端
@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 令牌从一个微服务传递到另一个微服务获得帮助?
【问题讨论】:
-
您是如何生成 JWT 令牌的?您是如何构建 Feign 目标的?
标签: spring-boot jwt microservices netflix-feign feign