SSO单点登录之二:Yale CAS实现单点登录(服务器端)
耶鲁大学开发的CAS单点登录系统在SSO中应该说是比较有名的啦,既然也是开源的,我们为何不拿过来学习学习呢
很早之前的耶鲁的CAS开源包地址是在:http://www.yale.edu/tp/auth/?
目前的CAS开源包都已经转移到新网址了,并且开源包里面的类名都没有以yelu开头了而是jasing
CAS客户端:http://downloads.jasig.org/cas-clients/?
CAS服务器端:http://www.jasig.org/cas/download?
我下载的都是目前最新版的cas-server-3.4.5服务器端和cas-client-3.2.0客户端
?
?CAS服务器端基础应用
1)将cas-server-3.4.zip解压到一个目录,将cas-server-3.4.5\modules\cas-server-webapp-3.4.5.war拷贝到tomcat的webapp中去,并且改名为CasServer.war.启动tomcat
2)现在可以访问CAS应用了,当然要使用HTTPS加密协议访问,例如本问用到地址:https://javacrazyer.sso.com:8443/CasServer/login,现在打开了CAS服务器的页面输入admin/admin点击登录(CAS默认的验证规则只要用户名和密码相同就通过)
?
所以如果你看到下面的这张图片你就成功了 ?
?
CAS服务器端深入应用,与数据库配置登录
?
首先打开tomcat/webapp/cas/WEB-INF/deployerConfigContext.xml文件,配置的地方如下:
?1)找到第92行处,注释掉:SimpleTestUsernamePasswordAuthenticationHandler这个验证Handler,这个是比较简单的,只是判断用户名和密码相同即可通过,这个肯定不能在实际应用中使用,弃用! ?
?2)注释掉92行后在下面添加下面的代码:
?
在文件的末尾结束之前加上如下
?
这里关于数据源配置可以参考我早前写的关于spring数据源配置方式的文章
2.2)passwordEncoder:处理密码加密
细心的朋友从最后面的代码可以看到MD5加密的类有两个实MD5PasswordEncoder就是默认我们只需把摸认类添
加上无需写其他继承类,而如果你非要继承的话,那么就写你自己的类继承自PasswordEncoder,具体可以更改encode方法
我这里就选择使用了继承的方式,我写的类如下
?
?
2.3)QueryDatabaseAuthenticationHandler是cas-server-support-jdbc提供的查询接口其中一个,QueryDatabaseAuthenticationHandler是通过配置一个 SQL 语句查出密码,与所给密码匹配?
?
2.4)sql:登录查询哪一张表
这里大家或许还有一句话可以看到<property name="sql" value="select password from t_admin_user where login_name=?" />
所以需要用到数据库脚本,数据库名称我这里起名为javacrazyer
这时你再去访问地址:https://javacrazyer.sso.com:8443/CasServer/login,输入数据库中存在的相同值的用户名密码,就能成功登陆了
?
关于CAS客户端SSO登录下一篇文章将会介绍