文档中心 > API文档

3.30.3.2.1. 实现单点登录接口

/**
  * 移动单点登录认证接口,包括两个方法:
  * <ol>
  * <li>登录:使用户名和密码进行登录认证,并返回认证的ticket</li>
  * <li>登出:使用ticket进行登录</li>
  * </ol>
  * 
  * @author wangx
  * @since JDK 1.5
  * @version 1.0
  */
 public interface ICMPSSOAuthentication {
     /**
      * 根据请求参数进行验证
      * @param request
      * @param response
      * @return 验证成功返回ticket,验证失败返回null
      */
     public String authenticate(HttpServletRequest request, HttpServletResponse response);
     
     /**
      * 登出
      * @param ticket 登录凭证
      * @return true登出成功,false则失败
      */
     public boolean logout(String ticket);
 }

说明:需要分别实authentication和logout两个接口,实现实例如下:

    /**
  * 该认证服务器使用的场景如下:
  * <p>
  * 认证服务器采用CAS作为认证服务器
  * </p>
  * @author wangx
  * @since JDK 1.5
  * @version 1.0
  */
 public class CMPUsernamePasswordCASAuthentication implements ICMPSSOAuthentication {
     private static final Logger log = Logger.getLogger(CMPUsernamePasswordCASAuthentication.class);
     private String serverUrl;
     private CMPForCASRESTfulServices services;
 
     @Override
     public String authenticate(HttpServletRequest request, HttpServletResponse response) {
         String username = request.getParameter(LoginConstants.USERNAME);
         String password = request.getParameter(LoginConstants.PASSWORD);
         
         String result = null;
         try {
             result = services.authentication(serverUrl, username, password);
         } catch (Exception e) {
             result = null;
             log.info("CAS authentication failed!", e);
         }
         return result;
     }
     
     @Override
     public boolean logout(String ticket) {
         return services.logout(serverUrl, ticket);
     }
 
     public String getServerUrl() {
         return serverUrl;
     }
 
     public void setServerUrl(String serverUrl) {
         this.serverUrl = serverUrl;
     }
 
     public CMPForCASRESTfulServices getServices() {
         return services;
     }
 
     public void setServices(CMPForCASRESTfulServices services) {
         this.services = services;
     }
 
 }
实例中的代码是使用CAS作为身份认证服务器的实现代码,其中用户名和密码是必传参数。