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

时间:2017-01-17 17:11:23

标签: java rest spring-boot ntlm netflix-zuul

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

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

~Jatin

2 个答案:

答案 0 :(得分:1)

您需要自己编写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();
  }

}

有关详细信息,请查看this guide

答案 1 :(得分:0)

Zuul将在Spring Session中正常运行。有很多关于此的博客。

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