grails - 为什么grails的acegi插件在weblogic中不起作用?

标签 grails weblogic spring-security

我有一个graace(v1.2.1)应用程序,使用acegi插件(v0.5.2)对Active Directory域进行用户身份验证。

只要我使用“grails run-app”来运行应用程序,一切都可以完美运行;正确的 Controller /操作受到保护,用户可以成功登录,而不必在每个页面请求上登录等等。

当我在Weblogic 10.3中将应用程序作为 war 来运行时,整个过程崩溃了。正确的 Controller /操作需要身份验证,但是成功登录后,总是将用户发送到defaultTargetUrl而不是其最初请求的URL。成功登录后,如果我尝试返回刚刚导致我登录的 protected 页面,它将要求再次登录(这无济于事,因为成功登录仍会将我发送到defaultTargetUrl)。如果我有意在登录页面上输入错误的用户名/密码,则会按照设计将我发送回登录页面,但不会显示验证消息。

我添加了一些日志记录/完成了一些调试,并确定了以下内容:

  • 无论我是从weblogic还是独立运行,筛选器链均具有相同顺序的相同类的实例:
    [org.springframework.security.context.HttpSessionContextIntegrationFilter,
    org.codehaus.groovy.grails.plugins.springsecurity.FixRedirectLogoutFilter,
    org.codehaus.groovy.grails.plugins.springsecurity.GrailsAuthenticationProcessingFilter,
    org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter,
    org.springframework.security.ui.rememberme.RememberMeProcessingFilter,
    org.springframework.security.providers.anonymous.AnonymousProcessingFilter,
    org.springframework.security.ui.ExceptionTranslationFilter]
  • 在独立运行(grails运行应用程序)时,我的 session 在安全过滤器尝试对用户凭据进行身份验证之前保存了org.codehaus.groovy.grails.FLASH_SCOPE和SPRING_SECURITY_SAVED_REQUEST_KEY属性。在weblogic中, session 此时没有属性。我已经检查过了,属性值类都是可序列化的。
  • 在Weblogic中运行时,在HttpSessionContextIntegrationFilter request的开头。getSession(false)返回null。
  • 最佳答案

    解决了。

    如果您看到这样的行为,请检查您的cookie。我的浏览器对本地主机有几个“JSESSIONID” cookie。其中两个JSESSIONID的路径与我的应用程序的路径匹配(一个用于路径“/”,一个用于我的应用程序路径。

    浏览器正在HTTP header 中发送两个匹配的JSESSIONID。 header 中的第一个JSESSIONID不是刚刚设置的,因此我的应用程序认为请求不是同一 session 的一部分。因此,所有 session 属性的丢失。特别是与登录相关的。

    关于grails - 为什么grails的acegi插件在weblogic中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283800/

    相关文章:

    hibernate - Grails 级联行为

    maven - 使用通用 WebDAV 托管私有(private) Maven 存储库

    weblogic - 如何获取部署在 WebLogic Server 中的 EAR 的类路径

    java - jQuery 相对 URL 不起作用

    java - Spring Security OAuth2 简单配置

    grails - 引导完成后,Grails执行服务方法

    grails - Groovy 中的编译时检查

    web-services - ORA-14552 : cannot perform a DDL, 在查询或 DML 中提交或回滚

    java - Spring Security 注销未命中 success-handler-ref

    java - 为什么我的 Spring Security Voter 仅在登录时调用,而不是在每个页面访问时调用?