首先弄清楚两个概念CAS Server和CAS Client.
CAS Server就是统一验证用户身份的web app,这里使用esup-cas-server。
CAS Client是待整合到SSO体系的原有或后开发的应用系统。一般部署在不同的Server上。
1、下载CAS Server
我采用的是esup-cas-server
主要配置:
WEB-INF/genericHandler.xml中配置handler如下:
2、将所有的JSP页面进行汉化,原来的不知道是欧洲哪个国家的文字。
3、将其重命名为cas-web然后拷贝到tocmat/webapps下面即可。
4、配置tomcat的SSL Connector,需要用到keystore的知识。
上述配置表明,tomcat使用8443端口进行SSL连接,并使用c:/mykeystore 中的tomcat名的证书。
其他keygen, export, import等操作不再多说,网上有很多资料。
5、CAS Client端配置
这是CAS SSO方案比较不错的地方,在待整合到SSO中的Web App中,不需要对原来的系统进行大的改动,只需要了解其对用户是否登录的判断标准是什么。一般都是在Session中有一个什么attribute,如果有就认为已经登录,如果没有就跳转到login页面。当然也有比较变态的,比如RiseNet的东西,就需要根据用户名密码到LDAP中进行验证,生成一个IAuthedUser,并通过该对象取得LDAP中存储的token,及guid,并根据guid创建一个RiseUser对象,最后将riseUser放到Session中。
了解其验证方式之后,我们就可以动手了。
下载esup-casgeneric package, 修改其edu.yale.its.tp.cas.client.filter.CASFilter类,在doFilter中设置待整合系统身份登录所需attribute。注意:共有两个地方需要修改:
①:用户通过CAS Server的验证之后,将待整合系统的session variable写入;
if (session != null && session.getAttribute(CAS_FILTER_USER) != null) {
//TODO:session.setAttribute
②:在获取ticket并验证其有效性之后,如果Session不为空,也需要添加相同的逻辑
if (session != null){
//TODO:session.setAttribute
完成后,将CASFilter打包为casfilter.jar,并扔到待整合webapps的WEB-INF/LIB/目录下。
6、修改待整合Web App Web.xml
添加(修改)用户登录身份检查的Filter及filter-mapping配置,具体参见:http://www.ja-sig.org/products/cas/client/javaclient/index.html