【问题标题】:Why is Spring Security HTTP BASIC redirecting to wrong URL?为什么 Spring Security HTTP BASIC 重定向到错误的 URL?
【发布时间】:2013-05-20 00:41:56
【问题描述】:

我有一个简单的 Spring Security (3.x) 配置,要求对我的应用程序中的一部分资源进行 HTTP BASIC 身份验证。

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/secured/**" access="hasRole('ROLE_ADMIN')" requires-channel="https" />
    <http-basic />
</http>

应用部署在上下文根ctx。我正在将模式/secured/* 映射到 Spring Security 过滤器链上。

对资源https://server:httpsport/ctx/secured/blah 的请求工作正常。对https://server:httpsport/ctx/secured 的请求也是如此。但是,当我切换到不安全时,例如。 http://host:port/ctx/secured 似乎重定向返回错误,复制了上下文根。在我的日志中,我可以看到向/ctx/ctx/secured/... 发出了请求。

有人可以建议问题是什么或我应该去哪里看吗?

【问题讨论】:

  • 您是否使用 fiddler 或某种 HTTP 代理或 HTTP 捕获拦截了 302,以确保 302 确实具有 /ctx/ctx? Spring生成的重定向URL(端口号后面的部分)应该是request.getRequestURI() + ((queryString == null) ? "" : ("?" + queryString));
  • 问题解决了吗?我遇到了相同的重复上下文路径问题。当我在本地开发时它可以工作。但是在生产中使用 nginx 进行代理时,这是一个问题。

标签: java web-applications spring-security basic-authentication


【解决方案1】:

我遇到了同样的问题,在这里找到了答案:http://myshittycode.com/2014/06/12/spring-security-forcing-urls-to-use-https/

所以在我的情况下,问题在于使用不默认的 HTTP 和 HTTPS 端口。 在这种情况下,添加端口映射会有所帮助。

    <port-mappings>
        <port-mapping http="{yourHttpPort}" https="{yourHttpsPort}" />
    </port-mappings>

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2019-01-17
    • 2017-05-10
    • 1970-01-01
    • 2010-12-18
    • 2018-01-12
    • 2012-09-12
    • 2013-07-12
    相关资源
    最近更新 更多