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

a4c26d1e5885305701be709a3d33442f.png最早由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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里大数据云原生化实践,EMR Spark on ACK 产品介绍

开源大数据社区 & 阿里云 EMR 系列直播 第六期 主题:EMR spark on ACK 产品演示及最佳实践 讲师:石磊,阿里云 EMR 团队技术专家 内容框架: 云原生化挑战及阿里实践Spark 容器化方案产品介绍和演示直播回放:扫描文…

剪映电脑版_七款手机剪辑app,效果堪比电脑软件

鉴于很多小伙伴因为没有电脑或者电脑配置低带不动pr或者AE的这类软件,但是又对剪辑有一定兴趣的人,可以先从手机上的剪辑做起,可以为以后的电脑办公打下很好的基础,亦或者有些人在电脑不方便用的情况下,想先用手机大致…

xposed 修改参数_【Android 原创】2020春节红包第三题Xposed框架Hook的应用

作者论坛账号:CrazyNut准备工具以及思路首先不了解Xposed框架Hook的可以看看大佬的基础教程 - 《教我兄弟学Android逆向12 编写xposed模块》本文不需要会看懂汇编代码,当你看完上面的文章,学会Xposed框架Hook的简单应用后。就算是从未接触过的…

Let‘s Fluent:更顺滑的MyBatis

简介: 只需瞅一眼Google Trends上全球Java界最热门的两款SQL映射框架近一年的对比数字,就不难了解其实力分布:在此领域,MyBatis早已占领东亚地区开发者市场,并以绝对优势稳居中国最抢手Java数据库访问框架之首。 作者 …

元宇宙会成为 IPv6 的拐点吗?

‍‍作者 | 马超,王丽丽,王一凡 责编 | 张红月出品 | CSDN(ID:CSDNnews)“如无必要,勿增实体”的奥卡姆剃刀原则,从IT人士的角度来看就是“只要能运行,就千万不要改”&#xf…

php网站加广告位,HotNews Pro主题文章内容上面添加广告位

使用的HotNew Pro主题后,文章内容上面没有广告位,但是有时需要在那个位置添加广告,就使用了一款叫Smart Ads广告管理插件,这个插件可以在文章内容上面和下面添加广告,直到昨天我删掉了Smart Ads这款插件,因…

电脑编程教学_东莞沙田mastercam编程学习怎么收费

东莞沙田mastercam编程学习怎么收费深圳卓越培训中心UG综合班主要课程:1,软件介绍,界面熟悉 ,快捷键,图层使用。2,草图使用,三维曲线绘制修改,草图线3D线互相转换。3,建模…

arduinowifi.send怎么获取响应_Vue3.0 响应式原理 (一)

前几天,回顾整理下关于vue2.0的响应式原理。温故而知新么,那么今天,整理了一下关于vue3.0的响应式原理,利用 JavaScript 来写的。本着尽可能的清晰易懂的原则,所以,可能会分几篇文章来发布。那现在开始上菜…

OceanBase首次阐述战略:继续坚持自研开放之路 开源300万行核心代码

简介: 在数据库OceanBase3.0峰会上,蚂蚁集团自主研发的分布式数据库OceanBase首次从技术、商业和生态三个维度对未来发展战略进行了系统性阐述。同时,OceanBase宣布正式开源,并成立OceanBase开源社区,社区官网同步上线…

amd核芯显卡控制面板自定义分辨率_主流显卡的一位猛将:蓝宝石Radeon RX 5500XT显卡首测...

一直以来主流级显卡总是处于一个较为尴尬的位置,原因是由于性能的限制,主流显卡经常位于不上不下的局面。上面和电竞级显卡有很大的性能差距,而往下又感受了日新月异的核显的压力。于是很多玩家宁可加钱购买电竞显卡也不愿意购买这些主流显卡…

阿里云研究员叔同:云原生是企业数字创新的最短路径

简介: 今天,数字化成为企业的核心竞争力,千行百业都在拥抱云计算,拥抱云原生。2020年我们认为是云原生的落地元年,那么2021年将是云原生加速推动企业数字创新的关键节点。 作者 | 叔同 来源 | 阿里技术公众号 今天&am…

计算 a+aa+aaa+aaaa+aaaaa+ 的和_海南A级景区,三亚市就有14个,你都去过吗

日前,海南省旅游资源规划开发质量评定委员会发布2020年第2号和2020年第3号公告,海南长影环球100奇幻乐园批准为国家4A级旅游景区,海南霸王岭国家森林公园和桂林洋国家热带农业公园批准为国家3A级旅游景区。具体公告如下:海南省旅游…

如何成为云原生时代的卓越架构师

简介: “软件开发需要面对本质困难和附属困难。云原生、DevOps大幅降低了附属困难,使得架构师可以全力聚焦于业务复杂性,而DDD恰是管理业务复杂性的有效方法。” 本文作者:张刚,阿里云云效资深技术专家,AL…

创业 4 年获近 7000 万美元融资,53 岁老程序员 all in 开源

作者 | 伍杏玲 今年 6 月,《人均估值 5000 万 RMB,53 岁程序员能做到的,你也能!》一文刷爆技术人的朋友圈:2017 年成立的涛思数据,四年获近 7000 万美元融资,目前这个 40 人团队估值超 3 亿美元…

.net pdf转图片_PDF转图片怎么做?PDF一键转图片!

在日常工作中,我们经常需要把文件资料传给其他人看。但如果文档是PDF格式的话,很可能他人的设备因缺少相应的阅读工具而无法打开。这时,最好的方法就是将PDF文件转换成图片!这样不管是在电脑还是在一些移动设备上都可以查看。接下…

为什么你应该关心领域模型?

简介: 领域模型是DDD的核心,更是业务的深入认知 作者简介:张刚,软件工程博士,阿里云云效资深技术专家,ALPD方法学核心成员。 引言 领域模型是重要的概念。但是,真正了解并能熟练运用它的人并不…

三包围结构的字是什么样的_一年级语文重点(字、字母、字词、词语、句子)知识点汇总!...

一年级语文重点汇总一、字母A B C D E F G H I J K L M N O P Q R S T U V W X Y Za b c d e f g h i j k l m n o p q r s t u v w x y z二、 字1、组词。(形近字和同音字)么(什么) 无(无法) 高(高兴)公(公共) 元(一元…

Java编程技巧之样板代码

简介: 在日常编码的过程中,可以总结出很多“样板代码”,就像”活字印刷术中的“活字”一样。当我们编写新的代码时,需要用到这些“活字”,就把“样板代码”拷贝过来,修改替换一下就可以了,写起代…

CPU 被挖矿,Redis 竟是内鬼!

作者 | 轩辕之风O来源 | 编程技术宇宙却说这一日,Redis正如往常一般工作,不久便收到了一条SAVE命令。虽说这Redis常被用来当做缓存,数据只存在于内存中,却也能通过SAVE命令将内存中的数据保存到磁盘文件中以便持久化存储。只见Red…

vos3000落地网关对接教学_跨国合作:Serverless Components 在腾讯云的落地和实践

导语 | Serverless Components 是 Serverless Framework 推出的最新解决⽅案,具有基础设施编排能⼒,开发者通过使⽤ Serverless Components,可以灵活构建、组合和部署 Serverless 应⽤。本文是对腾讯云云函数团队前端负责人蔡卫峰在云社区沙龙…