最早由Yale开发的CAS在目前开源SSO市场上占据了80%的份额。简单研究了一下,感觉CAS确实比较成熟,认证流程均可通过证书保证安全,也提供了对多种App服务器和开发环境的支持。比较感兴趣的是两个:Php和Jetty,前者较为常用;后者是Hadoop平台内置的Jetty服务器。

一、配置Php认证

这个相当简单,有人实现了一个PhpCAS库,只需将CAS.php和client.php等三个php文件放置到应用目录下即可。然后代码中加入4行代码即可实现SSO,如下。其中需要指出的是这个例子并没有使用服务器证书认证,而只是让Apache/Php服务器从CAS服务器经由SSL验证PT。这种方式的前提是服务器之间是互相信任的,否则就可以让恶意服务器获取用户的一些信息。如需证书认证,会相当麻烦,参见后面的讨论

// import phpCAS lib

include_once('CAS.php');

// initialize phpCAS

phpCAS::client(CAS_VERSION_2_0,'tomcat',8443,'cas-server-webapp-3.4.2');

//此处要注意版本,目前CAS协议已经到3.0,但是还兼容2.0

// no SSL validation for the CAS server

phpCAS::setNoCasServerValidation();

// force CAS authentication

phpCAS::forceAuthentication();

二、配置Jetty认证

Jetty是一个比Tomcat更为小巧的Java应用服务器,被包括Hadoop、GAE在内的系统使用,GAE的某人说的很有道理,一个Jetty节省1MB内存,则10000个服务器就可以节省10GB空间,能省干吗不省呢?

Hadoop平台中,Jetty被当做一个嵌入式服务器使用了,配置基本上和Tomcat类似,都是需要配置Filter,此类配置很多,就不详述了。在应用中需要写一个跳转页面就可以了,对于Hive稍微罗嗦一些,主要是Hive默认使用了一个war文件,因此为了配置简单就需要使用两个war文件,一个支持SSO,一个不支持

- 当然也可以不这么用。应用中需要写如下2行代码获取用户名称:

Object uo =

session.getAttribute("edu.yale.its.tp.cas.client.filter.user");

if (uo instanceof String) user =

(String)uo;

三、配置服务器证书

配置证书比写出来代码更为麻烦,基本的教程中都是使用keytool生成自签名的证书,这种证书对于Tomcat来说,是可以接受的,但是处于安全性,Jetty不支持自签名证书,这就带来了很多的问题,这里有2种方法解决:

1. 修改CAS

Client的代码,使用http来做服务器端验证。(注:CAS客户端默认是不支持这种方式的,极其不安全,其代码中多次判断是否验证URL是https)

2. 配置非自签名证书。步骤如下:

2.1

自己搭建CA,可以使用OpenSSL,生成一个root证书,用root证书为CAS服务器签署一个服务器证书,将root证书导出为JKS格式。

2.2 将CAS服务器所在的Tomcat服务器(或者其他服务器)的JVM

Keystore中导入CAS服务器证书,同时也可以复制一份放到Tomcat中

2.3 将root证书转换为浏览器认识的格式,比如pkcs12,导入浏览器

2.4 将root证书导入到Jetty服务器的JVM Keystore中,同时也可以复制一份到Jetty中

这样,浏览器就可以接受CAS服务器的证书,Jetty服务器也可以接受CAS服务器的证书,达到互相信任的效果,实现SSO。这个流程还是很复杂的,我在2.4遇到问题,Jetty不认识JVM中的证书,以后闲下来再研究吧。

四、关于用户注册的思考

由于用户信息在CAS服务器和应用服务器上实际上都有存放,一般来说CAS只保存最为基本的用户名和密码认证信息,而应用服务器需要保存授权信息。这样就带来了鸡生蛋还是蛋生鸡的问题,或者说信息如何同步的问题。我想这不是什么技术问题,而是一种管理问题。比如在企业应用中可以统一创建用户目录,比如LDAP,预先部署用户的认证信息,由于服务器之间互信,只需使用统一的用户名就可以实现SSO。

应用服务器是否保存用户认证信息其实并不重要,但是应用服务器提供注册用户的功能时,需要在CAS用户数据库和应用中同时保存用户信息,一旦不同步,则无法实现SSO。

cas server php下载,关于用CAS Server与Php、Jetty配置实现SSO#4相关推荐

  1. Windows Server 2012 下载

    Windows Server 2012 下载 简介: Windows Server 2012是微软于2012年9月4日发布的服务器系统. 它是Windows 8的服务器版本,并且是Windows Se ...

  2. SQL Server 2014下载,安装和使用教程

    SQL Server 2014下载,安装和使用教程 一.SQL Server 2014下载 二.SQL Server 2014安装 三.SQL Server 2014使用 一.SQL Server 2 ...

  3. Windows Server 2019 下载

    Windows Server 2019 下载 简介: Windows Server 2019是微软于2018年11月13日发布的新一代Windows Server服务器操作系统,基于Win10 180 ...

  4. SQL Server 2022下载安装及配置

    文章目录 1.SQL Server + SMSS下载 2.SQL Server安装配置 3.SMSS安装 + 数据库连接 1.SQL Server + SMSS下载 SQLServer 2022下载 ...

  5. Windows Server 2016 下载

    Windows Server 2016 下载 简介: Windows Server 2016是微软于2016年10月13日正式发布的最新服务器操作系统.基于Win10 1607(LTSB)内核所开发. ...

  6. CAS统一登录认证(1): 搭建 CAS Server

    搭建 CAS Server 一.CAS单点登录-简介 1.1 CAS 简介 CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项 ...

  7. SQL Server 2008 下载地址(微软官方网站)

    哪里有sqlserver2008下载? 2011-9-24 23:58 提问者:ooseestars | 浏览次数:3252次 2011-9-26 11:38 最佳答案 SQL Server 2008 ...

  8. XamarinSQLite教程下载安装SQLite/SQL Server Compact Toolbox

    XamarinSQLite教程下载安装SQLite/SQL Server Compact Toolbox SQLite/SQL Server Compact Toolbox是一个Visual Stud ...

  9. Android 检查版本更新 Server后台下载

    问题来了,平时开发应用也许你会遇到这种场景:应用启动检查服务器版本,若大于当前版本,则要从网络上下载APK文件,并在Activity上展示进度条. 版本更新,无非是下载apk文件,安装apk. //其 ...

最新文章

  1. 第 5 章 Stream
  2. WCF 4.0 进阶系列 – 第十二章 实现单向操作和异步操作(下)
  3. 解决父级元素高度塌陷问题的方法
  4. switch注意事项
  5. linux vim复制粘贴删除,Linux vim删除、复制、粘贴快捷键
  6. mint linux qq,linuxmint系统下安装QQ
  7. 【LeetCode】【字符串】题号:*38. 外观数列
  8. python作用域总结_关于Python作用域自学总结
  9. linux centos需要MPEG-4 AAC解码器
  10. 【STM32F429的DSP教程】第13章 DSP快速计算函数-三角函数和平方根
  11. 操作系统每日一题 2020 July
  12. SqlServer数据库性能优化详解
  13. 视频号账号定位怎么做?如何做微信视频号定位
  14. AI领域首位图灵奖得主Marvin Minsky:求索“智能”奥秘的一生 | 人物志
  15. 【鲲鹏HCIA考试】随堂习题卷二
  16. keil c语言 1602时钟代码,基于单片机的LCD1602电子时钟设计.doc
  17. 5G智慧灯杆网关的行业应用与前景
  18. ABP EF Core多数据库支持
  19. 计算机毕业设计(9)python毕设作品之校园失物招领系统
  20. “Elasticsearch + Kibana + ik分词器“介绍与使用

热门文章

  1. 我今年89岁,刚刚拿了个物理学博士学位
  2. 博士毕业2年后,他成为985大学副院长
  3. 当选院士!兰州大学教授斩获美国该领域最高荣誉!
  4. 10亿!北大获最大一笔校友捐赠
  5. 认清一个人,看这四点就够了
  6. √2是个无理数,没有尽头,为什么边长为1的直角三角形可以画出来? 是悖论吗?...
  7. 玩游戏学微积分!探索理工锻炼的游戏化应用, 腾讯发布新游戏《微积历险记》...
  8. 基因大数据:一面是科技,一面是责任
  9. 海纳威上云 构建数字化透明工厂
  10. 入门云虚拟主机,为你的业务快速实现数据备份和数据恢复