返回

一分钟搞定:Spring Cloud 免 Token 调用微服务

后端

微服务中的免 Token 调用

在微服务架构中,微服务之间的调用通常需要携带 Token 进行身份验证。然而,在某些情况下,我们希望实现微服务之间的免 Token 调用,以简化调用流程并降低安全风险。本文将介绍如何在 Jeecg 框架中实现免 Token 调用。

为什么需要免 Token 调用?

免 Token 调用可以带来以下好处:

  • 降低网络开销: 每次调用都携带 Token 会增加网络流量,尤其是当调用频繁时。
  • 增强安全性: 减少 Token 泄露的风险,因为 Token 不再需要在每次调用中暴露。

如何实现免 Token 调用?

在 Jeecg 中,可以通过以下步骤实现免 Token 调用:

  1. 创建 Feign 配置类: 创建 FeignConfig 配置类,并在其中添加 RequestInterceptor Bean。
@Configuration
public class FeignConfig {

    @Bean
    public RequestInterceptor requestInterceptor() {
        return new FeignRequestInterceptor();
    }

}
  1. 实现 RequestInterceptor: 实现 FeignRequestInterceptor 类,并在 apply 方法中添加免 Token 调用逻辑。
public class FeignRequestInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate template) {
        // 在这里添加免 Token 调用逻辑
    }

}
  1. 添加免 Token 调用逻辑: 在 apply 方法中,判断请求头中是否包含 Token。如果没有 Token,则从请求参数中获取 Token 并将其添加到请求头中。
public class FeignRequestInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate template) {
        String token = template.header("Authorization");
        if (token == null) {
            token = template.query("token");
            if (token != null) {
                template.header("Authorization", "Bearer " + token);
            }
        }
    }

}

注意事项

使用免 Token 调用时需要考虑以下注意事项:

  • 安全性: 免 Token 调用可能会增加安全风险,因此需要采取其他安全措施,如鉴权和加密。
  • 适用于内部调用: 免 Token 调用主要适用于微服务之间的内部调用,不适用于外部调用。

常见问题解答

1. 免 Token 调用是否适合所有情况?
否,免 Token 调用只适用于受信任的内部调用,不适用于外部调用。

2. 免 Token 调用如何防止未授权访问?
免 Token 调用本身并不能防止未授权访问,还需要配合其他安全措施,如鉴权和加密。

3. 如何在 Jeecg 中启用免 Token 调用?
按照文章中介绍的步骤创建 Feign 配置类和 RequestInterceptor 实现类。

4. 免 Token 调用有哪些优势?
免 Token 调用可以降低网络开销,增强安全性。

5. 免 Token 调用有哪些注意事项?
需要考虑安全性并仅用于内部调用。