好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

cas开源框架php cas 源码

很多站长朋友们都不太清楚cas开源框架php,今天小编就来给大家整理cas开源框架php,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 CAS架构与原理简介 2、 CAS单点登录原理分析(一) 3、 如何配置使用CAS的PHP客户端 CAS架构与原理简介

HTTP是无状态协议,客户端与服务端之间的每次通信都是独立的,而会话机制可以让服务端鉴别每次通讯过程中的客户端是否是同一个,从而保证业务的关联性。 Session是服务器使用一种类似于散列表的结构,用来保存用户会话所需要的信息.Cookie作为浏览器缓存,存储Session ID以达到会话跟踪的目的。

SSO 单点登录,是企业为了解决在相互信任的系统上实现一次登录的解决方案。SSO将一个企业内部所有域中的用户登录和用户帐号管理集中到一起,SSO的好处显而易见:

CAS是SSO解决方案里面比较成熟的架构,是耶鲁大学发起的一个开源架构,其旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

下图是 CAS 最基本的协议过程:

CAS架构包括两部分:CAS Server和CAS Client。

以下是CAS应用之间交互过程的详细时序图与说明。

CAS单点登录原理分析(一)

一,业务分析

在分布式系统架构中,假设把上述的三个子系统部署在三个不同的服务器上。前提是用户登录之后才能访问这些子系统。那么使用传统方式,可能会存在这样的问题:

1.当访问用户中心,需要用户登录帐号

2.当访问购物车,还需要用户登录帐号

3.当访问商品结算,又一次需要用户登录帐号

访问每一个子系统都需要用户登录帐号,这样的体验对于用户来说是极差。而使用单点登录就可以很好地解决上述的问题。

二,单点登录

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的 session 是无法解决的,我们需要使用相关的单点登录技术来解决。

第一步 :用户访问应用系统1。过滤器判断用户是否登录,没有登录,则重定向(302)到认证系统去进行认证操作。

第二步 :重定向到认证系统,显示登录界面,用户输入用户名密码。认证系统将用户登录的信息记录到服务器的session中。

第三步 :认证系统给浏览器发送一个特殊的凭证ticket,浏览器将凭证交给应用系统1,应用系统1则拿着浏览器交给他的凭证ticket去认证系统验证凭证ticket是否有效。凭证ticket若是有效,将用户信息保存到应用系统1的session中一份,并告知应用系统1,用户通过认证。

第四步 :用户通过认证,浏览器与网站之间进行正常的访问。

第五步 :当用户再次访问应用系统1,由于应用系统1的session中有用户信息,所以就不用经过认证系统认证,就可以直接访问应用系统1了。

第六步 :当用户再去访问其他应用系统时,浏览器会带着凭证ticket过去,其他应用系统到认证系统验证凭证,凭证ticket若是有效,将用户信息保存到其他应用系统的session中一份,并告知其他应用系统,用户通过认证。

第七步 :用户通过认证,浏览器与网站之间进行正常的访问。

第八步 :当用户再次访问其他应用系统,由于其他应用系统的session中有用户信息,所以就不用经过认证系统认证,就可以直接访问其他应用系统了。

三、Yelu大学研发的CAS(Central Authentication Server)

1.什么是CAS?

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

【1】开源的企业级单点登录解决方案。

【2】CAS Server 为需要独立部署的 Web 应用。这个CAS框架已经提供

【3】CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。下图是 CAS 最基本的协议过程:

2.CAS的详细登录流程

该图主要描述

1.第一次访问

2.在登录状态下第二次访问

3.在登录状态下第一次访问

下面对图中序号代表的操作进行说明

当用户第一次访问

序号1: 用户请求,会经过AuthenticationFilter认证过滤器(在cas client 的web.xml中配置)

主要作用:判断是否登录,如果没有登录则重定向到认证中心。

大概知道这个就行,CAS的具体实现会在以后的博客中写道

序号2: ?AuthenticationFilter发现用户没有登录,则返回浏览器重定向地址。

重定向的地址就是认证服务器CAS Server的地址,后面的参数是我们请求的客户端地址,这个参数目的就是为了认证成功以后,根据这个参数的地址重定向回请求的客户端

序号3: ?浏览器根据响应回来的重定向地址,向cas.xiaogui测试数据认证系统发出请求

序号4: ?认证系统cas.xiaogui测试数据接收请求,响应登陆页面

序号5: :用户登陆页面输入用户名密码,提交请求

序号6: :CAS Server 认证服务器接收用户名和密码,就行验证,验证逻辑CAS Server 已经实现,并响应给浏览器信息

这里的用户名,密码不需要关心,后续会讲到

图中1,2部分表示序号5 输入的用户名,密码,以及发出的请求。当认证服务器验证通过之后,根据请求参数service的值,进行重定向,其实就是回到了请求的客户端,同时会携带一个ticket令牌参数。同时会在Cookie中设置一个TGC,该cookie是网站认证系统cas.xiaogui测试数据的cookie,只有访问这个网站才会携带这个cookie过去。

*****注意:这个携带TGC的Cookie是实现CAS单点登录的关键所在!

Cookie中的TGC:向cookie中添加该值的目的是当下次访问cas.xiaogui测试数据认证系统时,浏览器将Cookie中的TGC携带到服务器,服务器根据这个TGC,查找与之对应的TGT。从而判断用户是否登录过了,是否需要展示登录页面。TGT与TGC的关系就像SESSION与Cookie中SESSIONID的关系。

TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)

TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根据他可以找到TGT。

ST:Service Ticket (小令牌),是TGT生成的,默认是用一次就生效了。也就是上面数字3处的ticket值。

序号7: ?客户端拿到请求中的ticket信息,也就是图中1的位置

然后经过一个ticket过滤器Cas20ProxyReceivingTicketValidationFilter,去认证系统CAS Server判断ticket是否有效

这个过滤器的主要工作就是校验客户端传过来的ticket是否有效

CAS Client 客户端? shopping.xiaogui测试数据 ?中web.xml的配置

序号8: ?向CAS Server认证系统发出验证ticket的请求,也就是图中2的位置,然后执行ticket验证

序号9: ?通过校验之后,把用户信息保存到客户端的session中,并把客户端的SessionID设置在Cookie中,同时告知客户端ticket有效。当用户再次访问该客户端,就可以根据Cookie 中的SessionID找到客户端的Session,获取用户信息,就不用再次进行验证了。也就是图中响应给浏览器的部分。

序号10: ?shopping.xiaogui测试数据客户端接收到cas-server的返回,知道了用户已经登录,ticket有效,告知浏览器可以进行访问。

至此,用户第一次访问流程结束。

当用户第二次访问

序号11: 当用户第二次访问,仍然会经过AuthenticationFilter过滤器,但与第一次访问不同的是此时客户端session中已经存在用户的信息,浏览器中的Cookie会根据SessionID找到Session,获取用户信息,所以不需要进行验证,可以直接访问。

序号12: ?客户端告知浏览器可以进行访问。

当用户第一次访问

序号13: ? 用户向pay.xiaogui测试数据 ?CAS Client客户端发出请求

序号14: ?:pay.xiaogui测试数据接收到请求,发现第一次访问,于是给他一个重定向的地址,让他去找认证中心登录。

序号15: 浏览器根据上面响应的地址,发起重定向,因为之前访问过一次了,因此这次会携带上次返回的Cookie:TGC到认证中心。

序号16: ?认证中心收到请求,发现TGC对应了一个TGT,于是用TGT签发一个ticket,并且返回给浏览器,让他重定向到pay.xiaogui测试数据CAS Client客户端。

序号17: 根据上面响应回来的地址,进行重定向到pay.xiaogui测试数据CAS Client客户端

序号18: ?pay.xiaogui测试数据CAS Client客户端带着ticket去认证中心验证是否有效。

序号19: ?认证成功,把用户信息保存到客户端的session中,并把客户端的SessionID设置在Cookie中。当用户下次访问pay.xiaogui测试数据CAS Client客户端,直接登录,无需验证。

序号20: ?告知浏览器可以进行访问

CAS单点登录的原理分析大致就是上述的这些,至于CAS单点登录的具体实现,将在下篇博客中写道。

如何配置使用CAS的PHP客户端

整个配置过程我划分成四步骤:

1、准备CAS的PHP库和相关库文件

1)到CAS的网站下载文件phpcas-0.60-rc7.zip

2) 由于其用到了PEAR的DB库,需要到PEAR网站去下载。

下载文件PEAR-1.7.1.tgz和DB-1.7.13.tgz 也可在google上搜索。

当然不一定是我说的版本,但我给的是我试验成功的版本。

3) 用于使用到了SSL所以需要下载openssl。当然我是在windows环境下试验的,下载的是

其的windows版本。

4)安装openssl。

2、配置PHP环境

1)将phpcas-0.60-rc7.zip解压,我们选在了PHP环境的include目录。在其下建立cas将文件解压进去。

2)同理将PEAR-1.7.1.tgz和DB-1.7.13.tgz解压,也分别建立pear和db两个目录。

3)修改php环境的ini文件,一般是php.ini文件。将我们前两步骤建立的目录加入到include_path中。根据安装环境修改对应的unix或windows项。

4)由于phpcas用到了CURL(用于连接ssl)和DOMXML(用于处理CAS服务器返回的消息)两个组件,因此需要保证php解释环境需要有这两个扩展。需要做的就是修改ini文件将extentions节下的屏蔽符号去掉,然后就是检查PHP环境的extentions目录下是否有对应的.dll或.o文件。一般标准安装都会有。

3、测试CAS的php客户端

1)前面做完后,应该比较激动了,很想看看php程序到底能不能访问CAS呢。

2)在phpcas-0.60-rc7.zip中的docs/examples中有几个测试程序。当然我们先前解压的目录下也有。

3)我们只是看一下通了没有,因此拷贝example_simple.php文件到apache的htdocs下。具体根据你的web服务器配置。总之目的就是能通过浏览器访问example_simple.php。在用之前需要修改

example_simple.php文件,主要是要修改里面关于CAS服务器配置信息,修改代码中的phpCAS::client(...)这一句。整个方法意义如下:

phpCAS::client(CAS_VERSION_2_0,'服务地址',端口号,'cas的访问地址');

将自己的服务地址和端口号和cas的相对服务地址的url填如就可以了,例如:phpCAS::client(CAS_VERSION_2_0,'localhost',8443,'cas');表示可以通过localhost:8443/cas访问到CAS服务。

4)在浏览器里试验一下吧,没有意外的话会看到CAS的登录界面。这就表示配通了。

4、根据项目需要修改对应的PHP代码,加入对CAS的调用,将用户登录交给CAS我们只需处理对应的用户,在PHP程序中的权限问题了。对于旧有就有的PHP代码只需要用访问CAS服务换掉验证用户身份部分就可以了。

调用CAS关键性代码:

include_once('CAS.php');

//可以不用,用于调试,可以通过服务端的cas.log看到验证过程。

phpCAS::setDebug();

// 初始化phpcas

p hpCAS::client(CAS_VERSION_2_0,'服务地址',端口号,'cas的访问地址');

例如:phpCAS::client(CAS_VERSION_2_0,'localhost',8443,'cas');

// 不使用SSL服务校验

phpCAS::setNoCasServerValidation();

// 访问CAS的验证

phpCAS::forceAuthentication();

这时候就验证完毕了

获得用户名可以通过phpCAS::getUser()

//登出

if (isset($_REQUEST['logout'])) {

phpCAS::logout();

}

当然CAS除了它默认的登录界面和校验逻辑,还是允许自行定义的。

如何自定义登录界面,后续在谈。

转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦

关于cas开源框架php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于cas开源框架php cas 源码的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did196975
更新时间:2023-04-26   阅读:38次

上一篇: 微信网页提示php 微信网页提示音下载

下一篇:php7.3的改进 php73 74

最新资料更新

  • 1.php项目基本流程 php项目如何运行
  • 2.php怎样打开url php链接怎么打开
  • 3.极路由安装php环境 极路由安装v2ray
  • 4.php比较数组差集 php比较多个数组中是否有重复值
  • 5.php+rpush的简单介绍
  • 6.包含ampquotphp的词条
  • 7.学校php培训机构 php培训学校是什么意思
  • 8.hbuilder写php hbuilder写PHP
  • 9.php微信推送提醒 php主动推送消息到安卓
  • 10.php降低curl版本 php怎么升级版本
  • 11.phpsql添加记录 php数据表里怎么添加数据
  • 12.哈希mapphp 哈希map和哈希table区别
  • 13.php声明字符串 在php中声明变量应使用什么符号
  • 14.php暂停方法 php 停止执行
  • 15.有哪些php社区 phpbbs
  • 16.php网站界面代码 php网页
  • 17.php使用嵌套for php解析嵌套json
  • 18.免费版仓库管理系统php 仓库管理系统php源码
  • 19.php解压gz效率 rarphp文件怎么解压
  • 20.php实例上传txt代码的简单介绍

CopyRight:2016-{hedonghua:year}{hedonghua:sitegs} 备案ICP:湘ICP备09009000号-16 {hedonghua:sitejym}
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2026 「好得很程序员自学网」
[ SiteMap ]