CAS做单点登陆(SSO)——集成Java Web 项目

本文档详细介绍了如何将一个Java Web应用与CAS集成,实现单点登录功能。步骤包括:添加cas-client的jar包到应用的lib目录,撰写支持CAS集成的客户化包,修改web.xml配置CAS filter,以及在CAS服务器端修改认证逻辑,使用数据库验证用户名和密码。最后,通过配置数据库连接和密码编码器,确保CAS能与现有系统无缝对接。
摘要由CSDN通过智能技术生成

添加cas-client的jar包

下载cas-client,地址:http://www.ja-sig.org/downloads/cas-clients/当前最新版本是cas-client-3.2.1-release.zip然后解压cas-client-3.2.1-release.zip,在modules拷贝cas-client-core-3.2.1.jar应用的WEB-INF/lib目录中

撰写支持CAS集成的客户化包

除了在web.xml添加CAS内置的filter外(具体看配置web.xml),我们需要撰写自己支持CAS集成的客户化包。大致思路如下:

	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
		
		HttpServletRequest request = (HttpServletRequest)servletRequest;
		HttpServletResponse response = (HttpServletResponse)servletResponse;
		
		HttpSession session = request.getSession();
		//在session中自定义一个参数,以它来校验是否完成过自动登陆
		Object user_login = session.getAttribute(AURORA_USER_LOGIN);
		if (user_login != null){
			//登陆过,就继续执行其他filter
			filterChain.doFilter(request, response);
			return;
		}
		//通过CAS的API获得登陆账号
		String loginName = AssertionHolder.getAssertion().getPrincipal().getName();
		try {
			//执行本系统的登陆。跟平常同时校验用户名和密码不同,这里只有用户名。
			executeLoginProc(request,response,loginName);
		} catch (Exception e) {
			logger.log(Level.SEVERE, "executeLoginProc error:", e);
			return;
		}
		//登陆成功
		session.setAttribute(AURORA_USER_LOGIN, Boolean.TRUE);
		//跳转到登陆成功后的页面
		response.sendRedirect(roleSelectPageUrl);
	}

把这个class打包成一个jar拷贝到应用的WEB-INF/lib目录中

<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值