Spring启动身份验证loadbalancer URL

时间:2018-01-26 16:06:55

标签: java spring authentication nginx

我的环境目前看起来像这样(示例地址):

database <-> spring boot app (localhost:8080) <-> web-serwer(nginx) (localhost:8081)

应用程序使用身份验证(jdbc),这就是我的问题。

  1. 当当前用户未经过身份验证并尝试打开安全URL(假设为localhost:8081/admin)时,会将其重定向到登录站点,然后URL变为localhost:8080/login(嵌入式tomcat服务器),从那时起每个请求是直接向tomcat。
  2. 当前用户未经过身份验证并尝试直接打开登录页面时(localhost:8081/login),成功登录后,他再次被重定向到tomcat url(localhost:8080)。
  3. 在没有身份验证的情况下“浏览”页面或在(手动更改URL)之后,一切都按预期工作(基本URL保持不变)。
  4. 我猜这是关于spring boot身份验证配置。任何想法如何“修复”它,以便基本URL始终是负载均衡器之一?使用AJP(atm简单的重定向)会解决它吗?

1 个答案:

答案 0 :(得分:0)

您可以将重定向页面设置为&#34; / login&#34;,而不是在那里指定主机名吗? (我假设您正在做的事情,但您没有提供有关如何从Spring Security配置HttpSecurity实例的代码。

如果这不起作用 - 而且它可能不会 - 您可能需要配置Spring Security以在其XML配置文件中禁用自动元数据生成。

对于这个问题,Spring Security实际上是一个Github问题,以及如何解决它,一步一步:Github Issue with this question, and its response

TL:DR:从securityContext.xml文件中删除(?)<security:custom-filter before="FIRST" ref="metadataGeneratorFilter"/>

我相信如果您这样做,它会将网址重置为仅使用/,而不是整个主机名,这应该有效。