RubyCAS-----来自ruby世界的一款灵巧的CAS服务器
说到cas服务器,首先想到的是耶鲁大学的那款基于java的开源cas服务器,研究一段时间后发现,不是很让人满意,首先是配置过程有点麻烦,新版本的java cas server 基于spring framework,用maven部署打包,如果没有一定java功底的话,很难驾驭它。再有就是定制过程麻烦,要对源码做一些修改,这就要求对源码结构有一定的了解。另外还有一些数字证书导入导出的繁琐过程。
那么现在就让Ruby将生活变得简单点,让RubyCAS将sso问题变得的容易些吧。之所以说RubyCAS灵巧主要有以下几个原因:
1 安装部署简单,你甚至可以不了解ruby编程。
2 可以不用SSL,因为很多应用,比如论坛博客社区等系统没有那么高的安全性要求,我们也不想在页面跳转时出现警告框。
3 可以用SSL,但它的过程是非常简单的,只需安装个gem即可。
4 定制简单,基本所有的定制在一个yml文件就搞定了。
…………
http://code.google.com/p/rubycas-server/wiki/QuickStart,这里有linux下配置安装的说明,那下面我就展示下windows/WEBrick平台下的安装部署测试过程。
1 安装RubyCAS,安装之前请保证你的你的机器已经装有ruby 1.8.4或更新的版本。在shell中输入:gem install rubycas-server
2 必要的配置,主要是指定cas server的端口、用户数据库以及验证策略,打开C:\ruby\lib\ruby\gems\1.8\gems\rubycas-server-0.6.0目录,新建config.yml文件,并将config.example.yml文件的内容全部拷贝进去,由于yml文件的可读性非常好,所以基本都可以理解其中的配置项,把以下3个地方的注释去掉并做如下修改:
server: webrick
port: 443
#ssl_cert: /path/to/your/ssl.pem
database: adapter: mysql
database: cas
username: root
password: 123456
host: localhost
authenticator: class: CASServer::Authenticators::SQL
database:cas
adapter: mysql
database: cas
username: root
password: 123456
server: localhost
user_table: users
username_column: username password_column: password
3 为了能在windows下运转正常,修改一行代码,linux平台下就省去这一步。打开C:\ruby\lib\ruby\gems\1.8\gems\rubycas-server-0.6.0\lib目录中的casserver.rb文件,
找到这行:
$CONFIG_FILE ||= '/etc/rubycas-server/config.yml' 改为: $CONFIG_FILE ||= 'C:\ruby\lib\ruby\gems\1.8\gems\rubycas-server-0.6.0\config.yml'
4 以上3步基本搞定cas server所有该做的事情了,事情就那么简单,在cmd中输入rubycas-server启动cas server,访问http://localhost:443即可看到登录界面。那么下面我们编写客户端测试吧,这里我采用的是ruby做客户端,http://www.javaeye.com/topic/210994这篇文章已经介绍了ruby客户端的配置使用,在这里只要在config/environment.rb 文件中最后那段修改为:
CASClient::Frameworks::Rails::Filter.configure( :cas_base_url => http://localhost:443 )
5 按照上一步建立2个rails应用A和B,分别装上rubycas客户端,我的测试结果如下,访问A时跳到了cas服务器登录界面,只有输入正确密码才跳回A,这时访问B时无需验证直接进入,并通过session[:cas_user]得到了在访问A时登入的用户名,关闭浏览器,A B反过来再来一遍,一样是可以的。
- 08:52
- 浏览 (232)
- 论坛浏览 (3506)
- 评论 (13)
- 相关推荐
评论
至于需要登录一次,还是登录一次加输入一次ID,只是操作上多一个步骤,没有质的区别
互联网越来越开放,越来越社会化,OpenID是适应这种趋势的
有影响,用户叫robin的登陆后,你可以在各个系统间畅通,session[:cas_user]存的就是robin,所以会造成用户名的冲突。推荐一种解决方案,用passport通行证做用户唯一标识,可以去搜狐看看:http://blog.sohu.com。
另外每个系统的表字段名字都不一样,如果是使用加密配置,似乎那个加密字段的名字已经写死了。
这个是用户数据整合的问题,cas管不了,所以请保证将cas连的用户数据库是已经经过整合的,保证用户有唯一的标识以及各个系统之间用户的同步,推荐的做法是各个系统公有用户表。
这样的话不如OpenID,OpenID用URI作为ID,本身就有唯一性,避免了冲突
而且好像OpenID实现起来也更简单些,受到的支持也更多
哈哈,openID != SSO,请参考:http://www.cricketschirping.com/weblog/?p=1123
有影响,用户叫robin的登陆后,你可以在各个系统间畅通,session[:cas_user]存的就是robin,所以会造成用户名的冲突。推荐一种解决方案,用passport通行证做用户唯一标识,可以去搜狐看看:http://blog.sohu.com。
另外每个系统的表字段名字都不一样,如果是使用加密配置,似乎那个加密字段的名字已经写死了。
这个是用户数据整合的问题,cas管不了,所以请保证将cas连的用户数据库是已经经过整合的,保证用户有唯一的标识以及各个系统之间用户的同步,推荐的做法是各个系统公有用户表。
这样的话不如OpenID,OpenID用URI作为ID,本身就有唯一性,避免了冲突
而且好像OpenID实现起来也更简单些,受到的支持也更多
肯定有很多心得。讲其原理。OK
http://linliangyi2007.javaeye.com/blog/165310这篇文章已经分析的很透彻了
请教各位。。
肯定有很多心得。讲其原理。OK
有影响,用户叫robin的登陆后,你可以在各个系统间畅通,session[:cas_user]存的就是robin,所以会造成用户名的冲突。推荐一种解决方案,用passport通行证做用户唯一标识,可以去搜狐看看:http://blog.sohu.com。
另外每个系统的表字段名字都不一样,如果是使用加密配置,似乎那个加密字段的名字已经写死了。
这个是用户数据整合的问题,cas管不了,所以请保证将cas连的用户数据库是已经经过整合的,保证用户有唯一的标识以及各个系统之间用户的同步,推荐的做法是各个系统公有用户表。
另外每个系统的表字段名字都不一样,如果是使用加密配置,似乎那个加密字段的名字已经写死了。
1. CASClient::Frameworks::Rails::Filter.configure(
2. :cas_base_url => http://localhost:443
3. )
- 浏览: 22492 次
- 性别:

- 来自: 天之涯

- 详细资料
搜索本博客
我的相册
共 16 张
链接
最新评论
-
Rails简洁的模板系统Mall ...
刑天战士 写道liuqiang 写道你们这种做法是合理的,一般美工给出个大致的页 ...
-- by lix23 -
如何进行项目跟踪
1、项目一定要进行生命周期的选型,确定各个里程碑的时间段。2、用代码行或者经验值 ...
-- by y31307 -
对WebGame行业的一点看法
本来就是对校内反感,感觉里面没什么东西,还大张旗鼓的! 钱几天被女朋友啦上去帮她 ...
-- by 稻香麦甜 -
对WebGame行业的一点看法
确实,本来一直认为校内没什么戏,如果有有这些游戏的存在,那么这个网站就不再空洞了 ...
-- by 稻香麦甜 -
互联网创业与软件开发
对的,感觉创业之初,技术绝对是奠基石,然后才是市场推广之类的,个人觉得专业化倾向 ...
-- by JimyChen






评论排行榜