【问题标题】:Spring boot authentication loadbalancer URLSpring Boot 身份验证负载均衡器 URL
【发布时间】:2018-07-06 00:20:43
【问题描述】:

我现在的环境是这样的(示例地址):

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 保持不变)。

我猜这是关于 Spring Boot 身份验证配置的。任何想法如何“修复”它,以便基本 URL 始终是负载均衡器之一?使用 AJP (atm it simple redirection) 会解决吗?

【问题讨论】:

    标签: java spring authentication nginx


    【解决方案1】:

    您可以将重定向页面设置为“/login”,而不是在其中指定主机名吗? (我假设您正在这样做,但您没有提供有关如何从 Spring Security 配置 HttpSecurity 实例的代码。

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

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

    TL:DR:从您的 securityContext.xml 文件中删除(?)&lt;security:custom-filter before="FIRST" ref="metadataGeneratorFilter"/&gt;

    我相信如果你这样做,它会将 URL 重置为只使用 /,而不是整个主机名,这应该可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 2016-01-03
      • 2017-01-10
      • 2021-01-10
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      相关资源
      最近更新 更多