/**
* 移动单点登录认证接口,包括两个方法:
* <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作为身份认证服务器的实现代码,其中用户名和密码是必传参数。
