1

我有 Spring SEcurity 的基本配置。注销按钮在 HTTP 上工作得非常好,但在处理 HTTPS 时会出现问题。我的安全配置如下所示:

<http use-expressions="true" auto-config="false" entry-point-ref="http403EntryPoint"
      access-denied-page="/accessDenied">
    <intercept-url pattern="/**" access="hasRole('AA_ACCESS')" requires-channel="any"/>
    <custom-filter position="PRE_AUTH_FILTER" ref="siteminderFilter"/>
    <session-management>
        <concurrency-control max-sessions="1" expired-url="/sessionExpired"/>
    </session-management>
    <logout invalidate-session="true" delete-cookies="JSESSIONID"/>
</http>

注销按钮:

<a href="<c:url value="${requestScope.pageContext.servletContext.contextPath}/j_spring_security_logout" />">Logout</a>

正如我所说,一切都可以通过 HTTP 正常工作,但不能通过 HTTPS。

我收到错误 404 找不到页面。应用程序运行的端口是:JBoss AS 的 11501,而 HTTPS 是带有 jBoss 的 ajp 连接器的 Apache,apache 是 16000,ajp 8009。

4

2 回答 2

1

卢克泰勒是对的。这不是 Spring Securiry 的问题。记住孩子们,在你的同事之后检查每件事两次。就我而言,Apache VirtualHost 配置错误:

<VirtualHost *:11600>
    ServerName localhost
    DocumentRoot "/apache/htdocs/aa"
    SSLEngine on
    SSLCertificateFile "/apache/conf/server.crt"
    SSLCertificateKeyFile "/apache/conf/server.key"
    ProxyPass /admin ajp://localhost:8009/admin/ <--- HERE
    <Directory "/apache/htdocs/aa">
      DirectoryIndex index.html
      AllowOverride All
      Order allow,deny
      Allow from all
    </Directory>
    ErrorLog "logs/error_log"
    CustomLog "logs/access_log" common
    LogLevel debug
</VirtualHost>  

注意 ProxyPass 末尾的附加斜线,这就是问题所在

于 2012-12-11T15:03:22.040 回答
0

不知道为什么它可以在 http 上运行,所以我不知道这是否会有所帮助,但您可以尝试logout-success-url在注销配置上进行设置,以防 404 错误是由于在注销完成后您被重定向的页面丢失所致。

http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#nsa-logout

于 2012-12-11T09:06:05.310 回答