--- /dev/null
+package org.springframework.security.ui.cas.util;
+
+import java.io.IOException;
+
+import java.util.List;
+
+import org.springframework.security.ui.AbstractProcessingFilter;
+import org.springframework.security.ui.cas.CasProcessingFilterEntryPoint;
+import org.springframework.security.ui.savedrequest.SavedRequest;
+import org.springframework.security.util.PortResolver;
+import org.springframework.security.util.PortResolverImpl;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jasig.cas.client.util.CommonUtils;
+import org.springframework.security.AuthenticationException;
+
+
+
+/**
+ * @author ericbrun
+ * This Utilise Class provide Multi CAS authentication based on Cookies.
+ */
+public class MultiCasProcessingFilterEntryPoint extends
+ CasProcessingFilterEntryPoint {
+
+
+ private String loginFormUrl = "";
+
+ private List<String> loginUrls;
+
+ private String responseUrl = "";
+
+ private List<String> logoutUrls;
+
+
+ public void commence(final ServletRequest servletRequest, final ServletResponse servletResponse,
+ final AuthenticationException authenticationException) throws IOException, ServletException {
+
+ final HttpServletResponse response = (HttpServletResponse) servletResponse;
+
+ final String urlEncodedService = CommonUtils.constructServiceUrl(null, response, this.getServiceProperties().getService(), null, "ticket",true);
+ final String redirectUrl = CommonUtils.constructRedirectUrl(this.getLoginUrl(), "service", urlEncodedService, this.getServiceProperties().isSendRenew(), false);
+
+ String realUrl = "";
+
+ HttpServletRequest req = (HttpServletRequest) servletRequest;
+ try{
+ SavedRequest current = (SavedRequest)req.getSession().getAttribute(AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY);
+ realUrl = current.getFullRequestUrl();
+ }catch(Exception e){
+
+ }
+
+
+ PortResolver portResolver = new PortResolverImpl();
+ SavedRequest savedRequest = new SavedRequest(req, portResolver){
+ public String getFullRequestUrl(){
+ return responseUrl;
+ }
+ };
+ req.getSession().setAttribute(AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY, savedRequest);
+
+ response.sendRedirect(redirectUrl+ "&realUrl="+realUrl);
+ }
+
+
+ public String getLoginFormUrl() {
+ return loginFormUrl;
+ }
+
+
+ public void setLoginFormUrl(String loginFormUrl) {
+ this.loginFormUrl = loginFormUrl;
+ }
+
+
+ public List<String> getLoginUrls() {
+ return loginUrls;
+ }
+
+
+ public void setLoginUrls(List<String> loginUrls) {
+ this.loginUrls = loginUrls;
+ }
+
+
+ public String getResponseUrl() {
+ return responseUrl;
+ }
+
+
+ public void setResponseUrl(String responseUrl) {
+ this.responseUrl = responseUrl;
+ }
+
+
+ public List<String> getLogoutUrls() {
+ return logoutUrls;
+ }
+
+
+ public void setLogoutUrls(List<String> logoutUrls) {
+ this.logoutUrls = logoutUrls;
+ }
+
+}