我有一台Netflix Zuul服务器接收所有HTTP请求并将它们转发到我的微服务。
底层微服务通过Facebook oauth API对用户进行身份验证。我从Facebook API收到用户数据,并以编程方式验证用户:
public Authentication login(String username, String password) {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
Authentication result = authenticationManager.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(result);
return result;
}
在Zuul面前,这不起作用。我认为它在微服务环境中建立会话,但从未将其扩展到Zuul。当请求直接进入微服务时,它可以正常工作。
我做了什么:
我清除了application.properties中的sensitiveHeaders属性:
zuul.routes.[SERVICE_NAME].sensitiveHeaders=
,但我认为这是相反的。
如何使用Zuul设置会话?
编辑:
我的Zuul配置:
# Zuul proxy
zuul.add-host-header=true
zuul.routes.httpbin.path=/**
zuul.routes.httpbin.serviceId=httpbin
zuul.routes.httbin.sensitiveHeaders=
httpbin.ribbon.listOfServers=http://localhost:8090
ribbon.eureka.enabled=false