php cas单点登录

php cas单点登录一、CAS简介1、结构体系从结构体系看,CAS包括两部分:CASServer和CASClient。1.1、CASServerCASServer负责完成对用户的认证工作,需要独立部署,CASServer会处理用户名/密码等凭证(Credentials)。1.2、CASClient负责处理对客户端受保护资源的访问请求,

大家好,又见面了,我是你们的朋友全栈君。

一、CAS简介
1、结构体系
从结构体系看, CAS 包括两部分: CAS Server 和 CAS Client 。

1.1、 CAS Server
CAS Server 负责完成对用户的认证工作 , 需要独立部署 , CAS Server 会处理用户名 / 密码等凭证(Credentials) 。

1.2、 CAS Client
负责处理对客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向到 CAS Server 进行认证。(原则上,客户端应用不再接受任何的用户名密码等 Credentials )。

CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。

2、 CAS 原理和协议
2.1、 基础模式
基础模式 SSO 访问流程主要有以下步骤:

  1. 访问服务: SSO 客户端发送请求访问应用系统提供的服务资源。

  2. 定向认证: SSO 客户端会重定向用户请求到 SSO 服务器。

  3. 用户认证:用户身份认证。

  4. 发放票据: SSO 服务器会产生一个随机的 Service Ticket 。

  5. 验证票据: SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。

  6. 传输用户信息: SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。

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

基础协议图

如 上图: CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护 Web 应用的受保护资源,过滤从客户端过来的每一个 Web 请求,同 时, CAS Client 会分析 HTTP 请求中是否包含请求 Service Ticket( ST 上图中的 Ticket) ,如果没有,则说明该用户是没有经过认证的;于是 CAS Client 会重定向用户请求到 CAS Server ( Step 2 ),并传递 Service (要访问的目的资源地址)。 Step 3 是用户认证过程,如果用户提供了正确的 Credentials , CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket ,并缓存以待将来验证,并且重定向用户到 Service 所在地址(附带刚才产生的 Service Ticket ) , 并为客户端浏览器设置一个 Ticket Granted Cookie ( TGC ) ; CAS Client 在拿到 Service 和新产生的 Ticket 过后,在 Step 5 和 Step6 中与 CAS Server 进行身份核实,以确保 Service Ticket 的合法性。

在该协议中,所有与 CAS Server 的交互均采用 SSL 协议,以确保 ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向 的过程。但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的(使用 HttpsURLConnection )。

CAS 请求认证时序图如下:

这里写图片描述

二、搭建CAS服务器
一般都是java服务器,本文不做介绍,有兴趣的可以借鉴下面的参考文档。

三、php客户端
PHP客户端下载地址:http://downloads.jasig.org/cas-clients/php/,目前最新版本为CAS-1.3.4
新建项目:cas.将CAS文件夹、CAS.php 和docs/examples/example_simple.php 复制到工程中,修改CAS/client.php,将其中的https改为http,即可成功登录。
cas需要用到的api:
phpCAS::client(CAS_VERSION_2_0, 服务器IP地址,端口,目录); 新建连接
phpCAS::setDebug() 开启调试模式
phpCAS::setNoCasServerValidation(); 用http协议连接
phpCAS::handleLogoutRequests(); 同步退出
phpCAS::forceAuthentication(); 调用登录页面
phpCAS::checkAuthentication() 检查是否登录
phpCAS::getUser() 获得登录之后的用户名

另外如果要用ajax异步判断是否登录,则不能用checkAuthentication方法,只能用session来判断。(虽然感觉有点不妥,但是只能想到这个办法了……….)

参考文档:http://www.open-open.com/lib/view/open1432381488005.html
http://blog.csdn.net/haiqiao_2010/article/details/38365733
http://blog.chinaunix.net/uid-22816738-id-3525939.html
http://blog.csdn.net/molaifeng/article/details/20628225

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135789.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月4日 下午5:00
下一篇 2022年6月4日 下午5:00


相关推荐

  • HTML5+CSS3学习总结(完结)

    一、HTML5的语义化二、CSS3动画三、CSS3阴影四、CSS3过渡(非常重要)五、弹性布局六、栅格布局七、渐变八、媒体查询

    2022年4月9日
    56
  • SSM-Spring(1)「建议收藏」

    SSM-Spring(1)「建议收藏」SpringSpring是一个开源的免费的框架Spring是一个轻量级的,非入侵式的框架控制反转(IOC),面向切面编程(AOP)支持事务的处理,对框架整合的支持IOC理论UserDaoUserDaoImpUserSeviceUserServiceImp在之前,用户的需求可能会影响原来的代码。使用一个set。public void setUserDao(UserDao userDao){ this.userDao = userDao;}之前是主动创建对象,控制

    2022年8月9日
    6
  • 思维导图软件哪个好?不要错过这份思维导图软件合集

    思维导图软件哪个好?不要错过这份思维导图软件合集小编最近发现了一个可以来做购物清单的简单工具 思维导图软件 思维导图的主要用途就是帮助我们理清思绪 增强计划和想法的逻辑性 可以用来规划任务 管理时间 将想法书面化 非常实用 小编为大家准备了三款个人感觉非常实用的思维导图软件 可以作为一个简单参考 一 MindManager 软件图标下载地址 https sourl cn aRWbbx 这是一款知名度相当高的思维导图软件 无论是学术讲座还是工作汇报 您都可以用 MindManager 轻松做出一份精致明了的思维导图

    2026年3月19日
    2
  • DayDayUp:2020,再见了,不平凡的一年,让我懂得了珍惜,让我明白了越努力越幸运[通俗易懂]

    DayDayUp:2020,再见了,不平凡的一年,让我懂得了珍惜,让我明白了越努力越幸运[通俗易懂]DayDayUp:2020,再见了,不平凡的一年,让我懂得了珍惜,让我明白了越努力越幸运导读:2020年的开篇,开的太意外,无论以什么样的眼光去回顾2020,它一定是载入史册的一年。突然起来的疫情,打得人们措手不及!人生的确不易,每个人都在负重前行,致敬那些可爱的人,感谢钟院士,感谢医护人员,感谢我们这这个强大的国家。2020年,太特殊,特殊的就像一场梦,无数的关键词涌入了记忆的心头:新冠,武汉,没毕业照,科比……前几天看到这样的一段话:2020年,最大的收获是一身伤,一身债,半条命、还活.

    2022年7月26日
    7
  • 深入浅出的意思是(v4)

    因为工作原因,项目中经常遇到目标检测的任务,因此对目标检测算法会经常使用和关注,比如Yolov3、Yolov4算法。当然,实际项目中很多的第一步,也都是先进行目标检测任务,比如人脸识别、多目标追踪、REID、客流统计等项目。因此目标检测是计算机视觉项目中非常重要的一部分。从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗。在此,大白将项目中,需要了解的Yolov3、Yolov4系列相关知识点以及相关代码进行完整的汇总,希望和大家

    2022年4月12日
    67
  • 3D视频编码(3d打印技术介绍)

    3D-HEVC编码框架3D-HEVC编码结构是对HEVC的扩展,每个视点纹理及深度图编码主要采用HEVC编码框架,但在其基础上增加了一些新的编码技术,使其更有利于深度图和多视点的编码。图13D-HEVC编码结构如上图所示,3D-HEVC编解码结构和MVC类似。图中所有输入的视频图像和深度图像是同一时刻,不同拍摄位置的场景,这些图像组成一个存取层。在同一个存取层中,首先对独立视点(基准视点…

    2022年4月13日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号