如何将 NTLM 凭据传递给 zuul 请求标头



我有一个Windows服务"A"用于身份验证目的(不由我们管理),我有一个基于Spring-boot的REST Api服务"B"(由我们管理),它使用Zuul来路由流量。有一个外部服务"C"(不由我们管理)需要通过我们的 REST API 与 Windows 服务通信。由于"A"使用 NTLM 身份验证,因此我们需要从"C"传递请求正文,并在"B"的标头中添加 ntlm 凭据,并使用 zuul 路由流量。

我的问题是,如何将 Java 中的 NTLM 凭据添加到 zuul 标头中的路由流量?

~ 贾廷

你需要编写自己的 ZuulFilter。

类似的东西

import javax.servlet.http.HttpServletRequest;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.ZuulFilter;
public class MyFilter extends ZuulFilter {
  @Override
  public String filterType() {
    return "pre";
  }
  @Override
  public int filterOrder() {
    return 1;
  }
  @Override
  public boolean shouldFilter() {
    return true;
  }
  @Override
  public Object run() {
    RequestContext ctx = RequestContext.getCurrentContext();
    HttpServletRequest request = ctx.getRequest();
    // now add your headers to the request
    return null;
  }
}

在您的应用程序中,只需确保创建了过滤器 bean,它将自动注册:

@EnableZuulProxy
@SpringBootApplication
public class GatewayApplication {
  public static void main(String[] args) {
    SpringApplication.run(GatewayApplication.class, args);
  }
  @Bean
  public MyFilter myFilter() {
    return new MyFilter();
  }
}

有关详细信息,请查看本指南。

Zuul 在春季会话中可以正常工作。有很多关于这个的博客。

http://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html

最新更新