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