Springboot:将从swagger UI捕获的JWT令牌自动传递给下游(服务到服务)API调用
Posted
技术标签:
【中文标题】Springboot:将从swagger UI捕获的JWT令牌自动传递给下游(服务到服务)API调用【英文标题】:Springboot: Pass the JWT token captured from swagger UI to the downstream(Service to service) API calls automatically 【发布时间】:2020-04-16 15:40:27 【问题描述】:我在寻找什么:-
-
将 JWT 令牌传递给从 swagger-ui (springfox) 实现中捕获的下游 API 调用(服务到服务调用)。
有没有办法达到同样的效果?
注意:- 我要从 Swagger-ui 中捕获令牌
【问题讨论】:
【参考方案1】:在您的 springboot 应用程序中,如果您想将 JWT 令牌传递给另一个 REST api,一般的方法是通过标头传递它。在您的 springboot 应用程序中,您可以配置您的 REST 模板 bean,以在您的应用程序的每个请求中包含 JWT 令牌。例如,您可以创建一个 REST 模板 bean,如下所示:
@Configuration
public class RestTemplateConfig
@Bean
@RequestScope
public RestTemplate authTokenAddedRestTemplate(HttpServletRequest inReq)
final String authHeader =
inReq.getHeader(HttpHeaders.AUTHORIZATION);
final RestTemplate restTemplate = new RestTemplate();
if (authHeader != null && !authHeader.isEmpty())
restTemplate.getInterceptors().add(
(outReq, bytes, clientHttpReqExec) ->
outReq.getHeaders().set(
HttpHeaders.AUTHORIZATION, authHeader
);
return clientHttpReqExec.execute(outReq, bytes);
);
return restTemplate;
然后您可以在任何地方使用相同的 rest 模板 bean。 这里提供了另一种方法:Propagate HTTP header (JWT Token) over services using spring rest template
【讨论】:
以上是关于Springboot:将从swagger UI捕获的JWT令牌自动传递给下游(服务到服务)API调用的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot中部署Swagger2和Swagger-UI
Spring Boot + Swagger + 自定义 swagger-ui.html