CAS系统介绍
CAS是单点登录系统(SSO)的一种,在多个应用系统中,只需要登录一次,就可以访问所有的系统。
一般会采用CAS统一登录页面,通过修改CAS中casLogin.jsp页面进行登录页面的改造。如果所有系统都是web端系统,建议采用这种方式。但在app登录或者个性化web需求中,就不得不考虑自定义登录了。
CAS自定义登录两种思路
- 修改login-webflow.xml文件,通过加入参数等方式,走不同的state,以获取Login Ticket(LT),在submit的时候,带上该LT,走正常的登录流程。且称为LT方式。
- 不走login-webflow,rest接口直接传入username、password,获取TGT。且称为TGT方式。
由于LT存放在CAS服务器本地,因此在集群部署的时候,我在项目中,使用的第二种方式。
LT方式
CAS统一登录页面的原理是,首先进入页面时,会获取到LT和execution,submit的时候,会对该LT进行验证。因此LT方式的目标是,自定义页面中,首先也获取到LT和execution,后续过程和统一的登录页面基本没区别。
So, 第一步:获取到LT和execution。一般如下流程:
- webflow中,添加action-state,根据传入的参数,判断走自定义的流程分支;
- 自定义流程分支中,要调用UniqueTicketIdGenerator生成LT,参考自带state:generateLoginTicket;
- 自定义流程分支中,要添加view-state及对应jsp页面,通过jsp页面做response返回。如:<%out.print(“json String”)%>
需要注意的是,此处如果是web端自定义登录页面,会有跨域问题。因此一般通过jsonp方式或iframe等,本人对前端不是太熟悉,不多提。
第一步获取LT后ÿ