cas server php下载,关于用CAS Server与Php、Jetty配置实现SSO#4
最早由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相关推荐
- Windows Server 2012 下载
Windows Server 2012 下载 简介: Windows Server 2012是微软于2012年9月4日发布的服务器系统. 它是Windows 8的服务器版本,并且是Windows Se ...
- SQL Server 2014下载,安装和使用教程
SQL Server 2014下载,安装和使用教程 一.SQL Server 2014下载 二.SQL Server 2014安装 三.SQL Server 2014使用 一.SQL Server 2 ...
- Windows Server 2019 下载
Windows Server 2019 下载 简介: Windows Server 2019是微软于2018年11月13日发布的新一代Windows Server服务器操作系统,基于Win10 180 ...
- SQL Server 2022下载安装及配置
文章目录 1.SQL Server + SMSS下载 2.SQL Server安装配置 3.SMSS安装 + 数据库连接 1.SQL Server + SMSS下载 SQLServer 2022下载 ...
- Windows Server 2016 下载
Windows Server 2016 下载 简介: Windows Server 2016是微软于2016年10月13日正式发布的最新服务器操作系统.基于Win10 1607(LTSB)内核所开发. ...
- CAS统一登录认证(1): 搭建 CAS Server
搭建 CAS Server 一.CAS单点登录-简介 1.1 CAS 简介 CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项 ...
- SQL Server 2008 下载地址(微软官方网站)
哪里有sqlserver2008下载? 2011-9-24 23:58 提问者:ooseestars | 浏览次数:3252次 2011-9-26 11:38 最佳答案 SQL Server 2008 ...
- XamarinSQLite教程下载安装SQLite/SQL Server Compact Toolbox
XamarinSQLite教程下载安装SQLite/SQL Server Compact Toolbox SQLite/SQL Server Compact Toolbox是一个Visual Stud ...
- Android 检查版本更新 Server后台下载
问题来了,平时开发应用也许你会遇到这种场景:应用启动检查服务器版本,若大于当前版本,则要从网络上下载APK文件,并在Activity上展示进度条. 版本更新,无非是下载apk文件,安装apk. //其 ...
最新文章
- 第 5 章 Stream
- WCF 4.0 进阶系列 – 第十二章 实现单向操作和异步操作(下)
- 解决父级元素高度塌陷问题的方法
- switch注意事项
- linux vim复制粘贴删除,Linux vim删除、复制、粘贴快捷键
- mint linux qq,linuxmint系统下安装QQ
- 【LeetCode】【字符串】题号:*38. 外观数列
- python作用域总结_关于Python作用域自学总结
- linux centos需要MPEG-4 AAC解码器
- 【STM32F429的DSP教程】第13章 DSP快速计算函数-三角函数和平方根
- 操作系统每日一题 2020 July
- SqlServer数据库性能优化详解
- 视频号账号定位怎么做?如何做微信视频号定位
- AI领域首位图灵奖得主Marvin Minsky:求索“智能”奥秘的一生 | 人物志
- 【鲲鹏HCIA考试】随堂习题卷二
- keil c语言 1602时钟代码,基于单片机的LCD1602电子时钟设计.doc
- 5G智慧灯杆网关的行业应用与前景
- ABP EF Core多数据库支持
- 计算机毕业设计(9)python毕设作品之校园失物招领系统
- “Elasticsearch + Kibana + ik分词器“介绍与使用