文档中心 > API文档

3.30.4.2.2. OA服务器实现Ticket单点登录接口

接口定义如下:

/**
  * @author wangx
  * @since JDK 1.5
  * @version 1.0
  */
 public interface ICMPSSOValidation {
     /**
      * 验证ticket有效性
      * @param request
      * @param response
      * @return 验证成功返用户名,验证失败返回null
      */
     public String validate(HttpServletRequest request, HttpServletResponse response);

接口实现如下:

/**
  * @author wangx
  * @since JDK 1.5
  * @version 1.0
  */
 public class CMPTicketCASValidation implements ICMPSSOValidation {
     private static final Logger log = Logger.getLogger(CMPTicketCASValidation.class);
     private static final ObjectMapper mapper = new ObjectMapper();
     private String serverUrl;
     private String serviceUrl;
     private CMPForCASRESTfulServices services;
     
     public CMPTicketCASValidation() {
         this.services = CMPForCASRESTfulServices.getInstance();
     }
 
     @Override
     public String validate(HttpServletRequest request, HttpServletResponse response) {
         String ticket = request.getParameter(CMPAuthenticationContants.TICKET);
 
         String result = null;
         try {
             String v = services.validateByTGT(serverUrl, ticket, serviceUrl);
             CMPReceivingTicketValidationResult t = mapper.readValue(v, CMPReceivingTicketValidationResult.class);
             if(t.isSuccess()) {
                 result = t.getUsername();
             }
         } catch (Exception e) {
             log.info("Invalid ticket,authentication failed!ticket=" + ticket, e);
         }
         return result;
     }
 
     public String getServerUrl() {
         return serverUrl;
     }
 
     public void setServerUrl(String serverUrl) {
         this.serverUrl = serverUrl;
     }
 
     public String getServiceUrl() {
         return serviceUrl;
     }
 
     public void setServiceUrl(String serviceUrl) {
         this.serviceUrl = serviceUrl;
     }
 }