Spring OAuth Authorization Server behind Spring Cloud Zuul Proxy
我目前正在开发一个基于微服务架构的应用程序。我们使用使用Spring Cloud Netfix的Zuul Server实现的API网关将请求路由到我们的微服务。
为了实现我们所有服务的单点登录,我目前正在使用Spring Cloud Security设置OAuth2服务器。服务器基本上只是Dave Syer的Repo:https://github.com/dsyer/spring-security-angular/tree/master/oauth2/authserver
主要区别在于我想通过Zuul Proxy将请求路由到我的OAuth服务器。这样,我就不必直接公开我的OAuth服务器,并且可以动态添加和删除登录服务器。
问题是我无法理解如何正确配置此设置。当我尝试访问OAuth服务器上的受保护资源时,我被转发到登录页面。这当然是预期的。但是我无法弄清楚转发时使用的主机名和端口。我想做的是服务器转发到Zuul服务器上的端点,该端点将被代理回OAuth服务器。(Zuul API 网关应该是客户端唯一与之通信的服务器。其他所有内容都将被隐藏。
因为它是主机和端口从 中读取。但服务器看到的请求是 Zuul 代理发送的请求。因此,我被转发到内部IP而不是代理上的端点。HttpServletRequest
LoginUrlAuthenticationEntryPoint
我试图将登录页面的URL设置为我的Zuul代理的绝对URL。但这只会导致我的应用程序抱怨重定向太多。(可能在那里引起了一个循环。WebSecurityConfigurerAdapter.configure(HttpSecurity)
设置它的最佳方法是什么?
- 我是否必须通过覆盖 Bean 来实现某种自己的转发策略?
- 是否有我缺少的配置选项?
- 我的想法本身是错误的吗?(在他的回答如何避免重定向到另一个主机与Zuul?Dave Syer说你通常不会代理这个,但没有解释为什么。