Package org.beangle.security.cas.web

Source Code of org.beangle.security.cas.web.CasEntryPoint

/* 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;
  }
}
TOP

Related Classes of org.beangle.security.cas.web.CasEntryPoint

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.