我们目前正在尝试在JBoss EAP 6.3.0服务器上部署CAS 4.0.1。
根据调用CAS的服务进行身份验证,自定义登录Web流以重定向到特定的登录表单。根据这些表单,我们使用特定的身份验证处理程序和特定的凭据模型。除此之外,配置相当标准。
目前,我们遇到以下问题:当用户尝试访问CAS保护的服务时,他被正确地重定向到门户网站,并呈现预期的登录视图;成功登录后,服务票据将被传送到服务端的身份验证过滤器(标准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'
答案 0 :(得分:5)
在SpringSecurity 4.x中,CasAuthenticationFilter的defaultFilterProcessesUrl路径已更改。 因此,在配置中将'/ j_spring_cas_security_check'更改为'/ login / cas'。
答案 1 :(得分:0)
...当然,原因是相当愚蠢的:不知何故(我必须看看我们的merge / git历史),cas-servlet.xml中定义的 viewResolver bean没有 basenames 属性集。