I'm porting a WebApp from Spring 3 to Spring 4 with Boot.
The original web.xml below
<listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <filter> <filter-name>CAS Authentication Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://casserver/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://myapp</param-value> </init-param> </filter> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://casserver/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://myapp</param-value> </init-param> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS Authentication Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <session-config> <session-timeout>90</session-timeout> </session-config> <context-param> <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> <param-value>messages</param-value> </context-param> I'm trying to register all filters, listeners and mappings inside my AppConfic class (below and NOT complete since it's already not working...)
@Configuration public class MyWebApplicationInitializer implements ServletContextInitializer { @Override public void onStartup(ServletContext servletContext) { servletContext.addListener(new SingleSignOutHttpSessionListener()); Cas20ProxyReceivingTicketValidationFilter cas20 = new Cas20ProxyReceivingTicketValidationFilter(); cas20.setServerName("http://myapp"); AuthenticationFilter authenticationFilter = new AuthenticationFilter(); authenticationFilter.setCasServerLoginUrl("https://casserver"); authenticationFilter.setServerName("http://myapp"); servletContext.addFilter("CAS Authentication Filter", authenticationFilter); servletContext.addFilter("CAS Validation Filter", cas20); servletContext.addFilter("CAS Single Sign Out Filter", new SingleSignOutFilter()); } } 1/ CAS20 instanciation problem
I can't define cas20 casServerUrlPrefix... There's no setter ?!
2/ AuthenticationFilter problem
Even with serverName defined, during startup, the following error occurs :
java.lang.IllegalArgumentException: serverName or service must be set. at org.jasig.cas.client.util.CommonUtils.assertTrue(CommonUtils.java:116) ~[cas-client-core-3.2.1.jar:3.2.1] at org.jasig.cas.client.util.AbstractCasFilter.init(AbstractCasFilter.java:103) ~[cas-client-core-3.2.1.jar:3.2.1] at org.jasig.cas.client.authentication.AuthenticationFilter.init(AuthenticationFilter.java:96) ~[cas-client-core-3.2.1.jar:3.2.1] at org.jasig.cas.client.util.AbstractCasFilter.init(AbstractCasFilter.java:84) ~[cas-client-core-3.2.1.jar:3.2.1] at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) ~[tomcat-embed-core-8.0.28.jar:8.0.28] at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:109) ~[tomcat-embed-core-8.0.28.jar:8.0.28] Is it possible to define inside a ServletContextInitializer this kind of filters ? Do I have to load a xml (dispatcher-servlet.xml like ?)
No comments:
Post a Comment