接口定义如下:
/** * @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; } }