CAS实现SSO配置简要指南

吕霖
2023-12-01

首先弄清楚两个概念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如下:

< authentication  debug ="on" >
    
< handler >
        
< classname >
            org.esupportail.cas.server.handlers.ldap.BindLdapHandler
</ classname >
        
< config >
            
< search_base > o=xx </ search_base >
            
< filter > cn=%u </ filter >
            
< scope > sub </ scope >
            
< bind_dn > cn=bjljadmin,ou=系统,o=xx </ bind_dn >
            
< bind_password > 1 </ bind_password >
            
< server >
                
< url > ldap://192.168.0.12:389/ </ url >
            
</ server >
            
< disable_multiple_accounts />
        
</ config >
    
</ handler >
</ authentication >


2、将所有的JSP页面进行汉化,原来的不知道是欧洲哪个国家的文字。

3、将其重命名为cas-web然后拷贝到tocmat/webapps下面即可。

4、配置tomcat的SSL Connector,需要用到keystore的知识。

< Connector  port ="8443"  maxHttpHeaderSize ="8192"    
               maxThreads
="150"  minSpareThreads ="25"  maxSpareThreads ="75"    
               enableLookups
="false"  disableUploadTimeout ="true"    
               acceptCount
="100"  scheme ="https"  secure ="true"    
               clientAuth
="false"  sslProtocol ="TLS"      
               URIEncoding
="UTF-8"  keystoreFile ="c:mykeystore"  keystorePass ="changeit"  keyAlias ="tomcat" />   



上述配置表明,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 

 类似资料: