Java tutorial
/* Copyright c 2005-2012. * Licensed under GNU LESSER General Public License, Version 3. * http://www.gnu.org/licenses */ package org.beangle.security.cas.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.Validate; import org.beangle.security.cas.CasConfig; import org.beangle.security.core.AuthenticationException; import org.beangle.security.core.userdetail.UsernameNotFoundException; import org.beangle.security.web.AuthenticationEntryPoint; import org.jasig.cas.client.util.CommonUtils; import org.springframework.beans.factory.InitializingBean; /** * Used by the <code>ExceptionTranslationFilter</code> to commence * authentication via the JA-SIG Central Authentication Service (CAS). * <p> * The user's browser will be redirected to the JA-SIG CAS enterprise-wide login page. This page is * specified by the <code>loginUrl</code> property. Once login is complete, the CAS login page will * redirect to the page indicated by the <code>service</code> property. The <code>service</code> is * a HTTP URL belonging to the current application. The <code>service</code> URL is monitored by the * {@link CasPreauthFilter}, which will validate the CAS login was successful. * * @author chaostone * @version $Id: CasProcessingFilterEntryPoint.java $ */ public class CasEntryPoint implements AuthenticationEntryPoint, InitializingBean { private CasConfig config; public CasEntryPoint() { super(); } public CasEntryPoint(CasConfig config) { super(); this.config = config; } public void afterPropertiesSet() throws Exception { Validate.notNull(this.config, "cas config must be specified"); } public void commence(final ServletRequest servletRequest, final ServletResponse servletResponse, final AuthenticationException ae) throws IOException, ServletException { final HttpServletRequest request = (HttpServletRequest) servletRequest; final HttpServletResponse response = (HttpServletResponse) servletResponse; if (null != ae && (ae instanceof UsernameNotFoundException)) { response.getWriter().append(String.valueOf(ae.getAuthentication().getPrincipal())) .append(ae.getMessage()); } else { final String encodedServiceUrl = CommonUtils.constructServiceUrl(request, response, null, config.getLocalServer(), config.getArtifactName(), config.isEncode()); final String redirectUrl = CommonUtils.constructRedirectUrl(config.getLoginUrl(), "service", encodedServiceUrl, config.isRenew(), false); response.sendRedirect(redirectUrl); } } public CasConfig getConfig() { return this.config; } public void setConfig(CasConfig config) { this.config = config; } }