自定义客户端登录CAS服务器-iframe实现
环境:
tomcat7.05
cas-server-3.4.5
cas-client-3.2.0
呃,你没看错,是用iframe实现。这个不算是一个好的方案,甚至我自己都有点看不起自己的感觉。但却是一个简单易用并最能兼容以后CAS-server更新的一套方案(还用说么,你都用iframe了)。目前项目比较紧急没时间去研究Spring WebFlow 3的情况下只好出此下策了,大神请喷。
这个题目相信使用过CAS的朋友都不会陌生了。由于安全性的问题,CAS-Server 一直不建议把验证放到客户端之上。所以不提供验证表单的接口,或者说必须我们去开发扩展。而在实际应用中,很多单点登录的表单却是在客户端中完成,例如在某门户首页的登陆框。这些是不可能在Cas-Server上直接改造成门户的。所以造成了必须在门户中进行CAS服务器表单验证的局面。
当然这一切都是建立在我目前对CAS的熟悉程度来说的,欢迎指教。
其实网上也有比较多的方案,但基本上是版本对不上了,我也逼于无奈才采取这种比较傻瓜式的方法进行验证。
不管怎样,虽然觉得说名字大家都知道实现原理了,但也应该照顾一些不理解的。
1.自己的登录页面中用iframe加载cas-server的登录页面。
2.当用户输入账号密码登录的时候,同时把账号密码信息传入cas-server登录页面,并且提交。
3.若成功则刷新页面,登录窗口消失。若失败则提示用户。这个iframe相对用户来说是不可见的。
引用一下前辈的客户端实现目标描述:
②添加redirectView
打开WEB-INF\classes\default_views.properties
增加如下字段:
附上本帖子提及过的文件和我测试的客户端项目,详细见附件。
题外:
本次开发是在netbeans上开发的,所以用eclipse的朋友导入demo项目可能要麻烦一些。不知道为何我的MyEclipse上的m4eclipse怎么没了,所以用不了maven插件,懒得弄就直接用netbeans了,因为NetBeans 6.9版本对maven支持很好。
参考:
http://fallenlord.blogbus.com/logs/36905130.html
http://fallenlord.blogbus.com/logs/36907990.html
http://fallenlord.blogbus.com/logs/36907044.html
我的也是吗,你是怎么解决的呢?
有时候点击按钮不反映的话,应该是所谓的跨域session丢失貌似这样就好使了。。。