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

SpringBoot整合Swagger-ui

springboot 集成swagger ui

Spring Boot + Swagger + 自定义 swagger-ui.html

Springboot捕获全局异常404-NoHandlerFoundException及Swagger/静态路由处理

无法使Swagger ui与springboot一起使用,得到白色标签错误(403)