【问题标题】:Jasig CAS - 404 code after successful service ticket validationJasig CAS - 成功服务票证验证后的 404 代码
【发布时间】:2015-06-03 15:36:59
【问题描述】:

我们目前正在尝试在 JBoss EAP 6.3.0 服务器上部署 CAS 4.0.1。

登录 Web 流程经过自定义,以便根据调用 CAS 进行身份验证的服务重定向到特定的登录表单。根据这些形式,我们使用特定的身份验证处理程序和特定的凭据模型。除此之外,配置相当标准。

目前,我们遇到以下问题:当用户尝试访问受 CAS 保护的服务时,他被正确重定向到门户,并呈现预期的登录视图;成功登录后,Service Ticket 被传递到服务端的身份验证过滤器(标准 j_spring_cas_security_check),然后根据 CAS 的票证注册表成功验证它。我们在日志中看到 CAS 正在渲染 cas2ServiceSuccessView ;但是,用户被重定向到登录表单,而不是传递预期的 XML 响应。 然后我们确认我们实际上在 cas2ServiceSuccessView 之后遇到了 404 错误...知道什么会触发这种行为/我们可能做错了什么吗?

请注意,无论我们如何调用 CAS 进行 ST 验证,我们都会遇到相同的错误:无论是手动通过 /serviceValidate?ticket=ST-YYY&service=XXX,还是通过服务端的 /j_spring_cas_security_check...

编辑:我们在 Tomcat 7 上运行 CAS 的行为相同。

提前致谢。

在我们得到的调试日志下方:

08:54:10,806 DEBUG [org.springframework.web.servlet.DispatcherServlet] (http-/0.0.0.0:8080-7) Last-Modified value for [/cas/serviceValidate] is: -1
08:54:10,809 INFO  [org.perf4j.TimingLogger] (http-/0.0.0.0:8080-7) start[1433314450807] time[2] tag[VALIDATE_SERVICE_TICKET]
08:54:10,810 INFO  [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] (http-/0.0.0.0:8080-7) Audit trail record BEGIN
=============================================================
WHO: audit:unknown
WHAT: ST-3-uecoOwdbdIn4bc2WvXfe-cas-test
ACTION: SERVICE_TICKET_VALIDATED
APPLICATION: CAS
WHEN: Wed Jun 03 08:54:10 CEST 2015
CLIENT IP ADDRESS: 127.0.0.1
SERVER IP ADDRESS: 127.0.0.1
=============================================================


08:54:10,810 DEBUG [org.springframework.validation.DataBinder] (http-/0.0.0.0:8080-7) DataBinder requires binding of required fields [renew]
08:54:10,811 DEBUG [org.springframework.web.servlet.DispatcherServlet] (http-/0.0.0.0:8080-7) Rendering view [org.springframework.web.servlet.view.InternalResourceView: name 'cas2ServiceSuccessView'; URL [/WEB-INF/view/jsp/cas2ServiceSuccessView.jsp]] in DispatcherServlet with name 'cas'
08:54:10,811 DEBUG [org.springframework.web.servlet.view.InternalResourceView] (http-/0.0.0.0:8080-7) Added model object 'assertion' of type [org.jasig.cas.validation.ImmutableAssertion] to request in view with name 'cas2ServiceSuccessView'
08:54:10,811 DEBUG [org.springframework.web.servlet.view.InternalResourceView] (http-/0.0.0.0:8080-7) Removed model object 'pgtIou' from request in view with name 'cas2ServiceSuccessView'
08:54:10,811 DEBUG [org.springframework.web.servlet.view.InternalResourceView] (http-/0.0.0.0:8080-7) Forwarding to resource [/WEB-INF/view/jsp/cas2ServiceSuccessView.jsp] in InternalResourceView 'cas2ServiceSuccessView'
08:54:10,812 DEBUG [org.springframework.web.servlet.DispatcherServlet] (http-/0.0.0.0:8080-7) Successfully completed request
08:54:10,814 DEBUG [org.springframework.web.servlet.DispatcherServlet] (http-/0.0.0.0:8080-7) DispatcherServlet with name 'cas' processing GET request for [/cas/login]
08:54:10,814 DEBUG [org.springframework.webflow.mvc.servlet.FlowHandlerMapping] (http-/0.0.0.0:8080-7) Mapping request with URI '/cas/login' to flow with id 'login'

【问题讨论】:

    标签: jboss http-status-code-404 cas jasig


    【解决方案1】:

    在 SpringSecurity 4.x 中,CasAuthenticationFilter 的 defaultFilterProcessesUrl 路径发生了变化。 所以在 Configuration 中将 '/j_spring_cas_security_check' 更改为 '/login/cas'。

    【讨论】:

    • 这有助于我使用 Spring Security 4。
    • 事件在更改 URL 后不起作用。相同的配置适用于 spring boot 但不使用 spring boot
    【解决方案2】:

    ...当然,原因相当愚蠢:不知何故(我必须查看我们的合并/git历史记录),cas-servlet.xml 中定义的 viewResolver bean 没有basenames 属性集。

    【讨论】:

    • 能否详细说明
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2016-03-25
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多