`
liuqiang
  • 浏览: 159494 次
  • 性别: Icon_minigender_1
  • 来自: 华东
社区版块
存档分类
最新评论

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平台下的安装部署测试过程。

 

 

安装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'

 

 

 

 

 

以上3步基本搞定cas server所有该做的事情了,事情就那么简单,在cmd中输入rubycas-server启动cas server,访问http://localhost:443即可看到登录界面。那么下面我们编写客户端测试吧,这里我采用的是ruby做客户端,http://www.iteye.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反过来再来一遍,一样是可以的。

 

 

 

 

<!---->http://code.google.com/p/rubycas-server/

分享到:
评论
13 楼 Stainlesssteel 2008-07-11  
看来CAS只适合区域局部使用,OpenID则可以在整个互联网上无冲突,做到一个ID用遍全球

至于需要登录一次,还是登录一次加输入一次ID,只是操作上多一个步骤,没有质的区别

互联网越来越开放,越来越社会化,OpenID是适应这种趋势的
12 楼 liuqiang 2008-07-11  
Stainlesssteel 写道
liuqiang 写道
carlosbdw 写道
假如A是个论坛,B是个博客,都有一个用户叫robin,但是其实不是一个人,用cas会不会造成问题啊?

有影响,用户叫robin的登陆后,你可以在各个系统间畅通,session[:cas_user]存的就是robin,所以会造成用户名的冲突。推荐一种解决方案,用passport通行证做用户唯一标识,可以去搜狐看看:http://blog.sohu.com。

carlosbdw 写道


另外每个系统的表字段名字都不一样,如果是使用加密配置,似乎那个加密字段的名字已经写死了。

这个是用户数据整合的问题,cas管不了,所以请保证将cas连的用户数据库是已经经过整合的,保证用户有唯一的标识以及各个系统之间用户的同步,推荐的做法是各个系统公有用户表。

这样的话不如OpenID,OpenID用URI作为ID,本身就有唯一性,避免了冲突

而且好像OpenID实现起来也更简单些,受到的支持也更多

哈哈,openID != SSO,请参考:http://www.cricketschirping.com/weblog/?p=1123
11 楼 Stainlesssteel 2008-07-10  
liuqiang 写道
carlosbdw 写道
假如A是个论坛,B是个博客,都有一个用户叫robin,但是其实不是一个人,用cas会不会造成问题啊?

有影响,用户叫robin的登陆后,你可以在各个系统间畅通,session[:cas_user]存的就是robin,所以会造成用户名的冲突。推荐一种解决方案,用passport通行证做用户唯一标识,可以去搜狐看看:http://blog.sohu.com。

carlosbdw 写道


另外每个系统的表字段名字都不一样,如果是使用加密配置,似乎那个加密字段的名字已经写死了。

这个是用户数据整合的问题,cas管不了,所以请保证将cas连的用户数据库是已经经过整合的,保证用户有唯一的标识以及各个系统之间用户的同步,推荐的做法是各个系统公有用户表。

这样的话不如OpenID,OpenID用URI作为ID,本身就有唯一性,避免了冲突

而且好像OpenID实现起来也更简单些,受到的支持也更多
10 楼 liuqiang 2008-07-09  
penghao122 写道
楼主说下CAS 的原理。研究了耶鲁大学的那款基于java的开源cas服务器


肯定有很多心得。讲其原理。OK

http://linliangyi2007.iteye.com/blog/165310这篇文章已经分析的很透彻了
9 楼 gm8pleasure 2008-07-09  
CAS是认证服务器吗?还是单点登录认证服务器。
请教各位。。
8 楼 penghao122 2008-07-09  
楼主说下CAS 的原理。研究了耶鲁大学的那款基于java的开源cas服务器


肯定有很多心得。讲其原理。OK
7 楼 liuqiang 2008-07-08  
carlosbdw 写道
假如A是个论坛,B是个博客,都有一个用户叫robin,但是其实不是一个人,用cas会不会造成问题啊?

有影响,用户叫robin的登陆后,你可以在各个系统间畅通,session[:cas_user]存的就是robin,所以会造成用户名的冲突。推荐一种解决方案,用passport通行证做用户唯一标识,可以去搜狐看看:http://blog.sohu.com。

carlosbdw 写道


另外每个系统的表字段名字都不一样,如果是使用加密配置,似乎那个加密字段的名字已经写死了。

这个是用户数据整合的问题,cas管不了,所以请保证将cas连的用户数据库是已经经过整合的,保证用户有唯一的标识以及各个系统之间用户的同步,推荐的做法是各个系统公有用户表。
6 楼 carlosbdw 2008-07-07  
假如A是个论坛,B是个博客,都有一个用户叫robin,但是其实不是一个人,用cas会不会造成问题啊?

另外每个系统的表字段名字都不一样,如果是使用加密配置,似乎那个加密字段的名字已经写死了。
5 楼 liuqiang 2008-07-07  
carlosbdw 写道
执行rubycas-server 并没有生成user_table: users 

users表是自己建的,不是自动生成的。

4 楼 carlosbdw 2008-07-07  
执行rubycas-server 并没有生成user_table: users 
3 楼 carlosbdw 2008-07-07  
似乎windows下必须这么写:

   1. CASClient::Frameworks::Rails::Filter.configure( 
   2.     :cas_base_url => http://localhost:443 
   3.   ) 
2 楼 liuqiang 2008-07-07  
在第2步的配置中,指定了验证数据库,所以用户信息存在什么地方可以自己决定,如果你愿意,可以把cas的数据库配成和A B一样的。
1 楼 carlosbdw 2008-07-07  
请问在cas的login画面输入的用户名和密码是A ,B两个系统中的吗?cas本身不保存用户名密码对吗?

相关推荐

    rubycas-client-rails:RubyCAS-Client的Rails插件

    安装将以下内容添加到您的Gemfile : gem 'rubycas-client-rails'然后在Rails应用程序的根目录中运行bundler: bundle install一旦安装了必要的gem,在application.rb添加: config.rubycas.cas_base_url = '...

    rubycas-server-activerecord:用于 RubyCAS 服务器核心 (RubyCAS2.0) 的 ActiveRecord 适配器

    用于 RubyCAS 服务器核心 (RubyCAS2.0) 的 ActiveRecord 适配器 安装 将此行添加到应用程序的 Gemfile 中: gem 'rubycas-server-activerecord' 然后执行: $ bundle 或者自己安装: $ gem install rubycas-...

    rubycas-server-core:处理 CAS 请求的核心逻辑,独立于任何特定的存储或 Web 呈现技术

    rubycas-服务器-核心 处理 CAS 请求的核心逻辑,独立于任何特定的存储或 Web 呈现技术。 要求 Ruby 2.1.x 贡献 分叉吧 创建您的功能分支( git checkout -b my-new-feature ) 提交您的更改( git commit -am 'Add...

    cas-server4.0

    CAS-Server-4.0.0是CAS服务器的一个重要版本,它提供了对最新技术和安全标准的支持,以确保用户能够安全、便捷地访问各种网络资源。 在CAS-Server-4.0.0中,我们关注以下几个核心知识点: 1. **SSO机制**:CAS的...

    ruby安装包-rubyinstaller-devkit-3.0.2-1-x64.zip

    Ruby是一种面向对象、动态类型的脚本语言,由Yukihiro "Matz" Matsumoto于1995年创建。它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、脚本自动化、服务器管理等领域。RubyInstaller是Windows...

    java-cas单点登录服务端

    CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,本文介绍了 CAS 的原理、协议、在 Tomcat 中的配置和使用,研究如何采用 CAS 实现轻量级单点登录解决方案。 CAS 是 Yale 大学发起的...

    ruby-debug-ide

    ruby-debug-ide是一个基于ruby-debug的库,它将调试功能暴露给IDE,使得开发者可以在图形化的环境中进行调试操作,如设置断点、查看变量值、单步执行等。ruby-debug-ide支持多种IDE,如NetBeans、RubyMine、Eclipse...

    ruby-2.5.3-x64 下载

    标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...

    ruby-1.9.2-p290.tar.gz

    标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...

    Ruby-服务器优化的Ruby发行版通过APTYUM实现更少内存更快速易于安装和安全补丁

    "Ruby-服务器优化的Ruby发行版通过APTYUM实现更少内存更快速易于安装和安全补丁"这个主题就聚焦于这样的发行版,特别是如何通过APT(Advanced Package Tool)和YUM(Yellowdog Updater, Modified)这两个包管理器来...

    Ruby-agoo一个用于Ruby的高性能HTTP服务器

    Ruby-agoo是一个专门为Ruby语言设计的高性能HTTP服务器,它的出现为开发者提供了另一种选择,尤其是在需要处理高并发、低延迟的Web服务场景下。本文将深入探讨agoo的特性、优势以及如何使用它来构建Web应用。 一、...

    swift-一个非常快速和简单的RubyWeb服务器

    然而,"swift-一个非常快速和简单的Ruby Web服务器"这个标题暗示了Swift在Web服务器领域的应用,特别是与Ruby语言的结合。这可能是关于一个用Swift实现的Web服务器框架,它旨在提供与Ruby的 Thin Web服务器类似的...

    Ruby-Rack一个模块化的Ruby服务器接口

    Rack提供了一个最小化,模块化和适应性强的界面,用于在Ruby中开发Web应用程序。 通过以最简单的方式包装HTTP请求和响应,它将Web服务器,Web框架和软件(所谓的中间件)之间的API统一并提炼成单个方法调用。

    Ruby-JSONAPIResources提供了一个框架来开发一个符合JSONAPI规范的服务器

    Ruby-JSONAPIResources 是一个基于 Ruby 的框架,专门用于构建遵循 JSON API 规范的服务器端应用。JSON API 是一种标准化的数据交换格式,它旨在提高客户端与服务器之间的数据交互效率和可读性,广泛应用于RESTful ...

    Ruby-Falcon用于Ruby的高性能web服务器支持HTTP2和HTTPS

    Ruby-Falcon是一个专门为Ruby语言设计的高性能Web服务器,它的出现为开发者提供了在处理高并发、低延迟场景下的优秀选择。Falcon的主要特点是其对HTTP/2协议和HTTPS的支持,这使得它在现代Web服务中具备了高效且安全...

    Ruby-AnsibleRubyonRails服务器Ubuntu16x

    在Ruby世界中,Ruby on Rails(RoR)是一种流行的开源框架,用于构建高效、优雅的Web应用程序。Ansible则是一个自动化运维工具,可以帮助我们轻松地配置、部署和管理服务器,尤其是对于Ruby on Rails应用的部署而言...

    Ruby-rubyinstall安装RubyJRubyRubiniusMagLevorMRuby

    `ruby-install`就是这样一个工具,它允许用户方便地安装和管理这些不同的Ruby实现。 `ruby-install`是一个开源的命令行工具,主要功能是下载、编译并安装Ruby、JRuby、Rubinius、MagLev或MRuby等不同版本的Ruby解释...

    ruby-1.8.7-p302.tar.gz

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302

    Ruby-bladetranslate是一款用ruby打造的简单控制台翻译软件

    Ruby-blade-translate是一款基于Ruby语言开发的轻量级命令行翻译工具,专为那些喜欢在终端环境下工作的开发者设计。它的核心功能是提供一种快速、便捷的方式,在不同的文本之间进行翻译,而无需离开命令行界面。这个...

    Ruby-OurPC是gRPC客户端和服务器的实验性实现

    Ruby-OurPC是一个针对gRPC框架的实验性实现,它为开发者提供了在Ruby环境中构建gRPC客户端和服务器的能力。gRPC是一个高性能、开源和通用的RPC(远程过程调用)框架,它基于HTTP/2协议设计,支持多种编程语言,包括...

Global site tag (gtag.js) - Google Analytics