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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 第六章:activiti流程分流判断之排它网关和并行网关

    第六章:activiti流程分流判断之排它网关和并行网关第六章:activiti流程分流判断之排它网关和并行网关

  • 1.1 学习之初&1.2 约定&1.3 认识Linux

    1.1 学习之初&1.2 约定&1.3 认识Linux

  • 测试用例设计的八大要素及ANSI/IEEE 829标准和编写示例[通俗易懂]

    测试用例设计的八大要素及ANSI/IEEE 829标准和编写示例[通俗易懂]1、测试用例的八大要素1.用例编号和其他编号一样,测试用例编号是用来唯一识别测试用例的编号,要求具有易识别和易维护性,用户可以很容易根据用例编号获取到相应用例的目的和作用,在系统测试用例中,编号的一般格式为A-B-C-D这几部分的作用分别如下:A:产品或项目类型,如CMS(内容管理系统)、CRM(客户关系管理系统)B:一般用来说明用例的属性,如ST(系统测试)、IT(集成测试)、UT(单元测试)C:测试需求的表示,说明该用例针对的需求点,可包括测试项和测试子项等,如文档管理、客户投诉信息管理

  • python进制转换代码_python十六进制转换成十进制

    python进制转换代码_python十六进制转换成十进制本文实例讲述了Python实现的十进制小数与二进制小数相互转换功能。分享给大家供大家参考,具体如下:十进制小数⇒二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位如:0.25的二进制0.25*2=…

  • pycharm怎么调背景_背景图片简约

    pycharm怎么调背景_背景图片简约设置的路径为:File|Settings|Appearance&Behavior|Appearance选择BackgroundImage弹窗的窗口中Image:点击最右边选择图片opacity:透明度中间的图形表示图片效果.最右边的九宫格,可以调整图片的显示,如果不想显示图片的上半部分,点击上面的格子即可,同理往下是不显示图片的下面内容Editoran…

  • java工程师薪资待遇_java软件工程师一个月挣多少钱

    java工程师薪资待遇_java软件工程师一个月挣多少钱Java软件工程师工资待遇详解时间:2018-08-16来源:未知Java软件工程师工资待遇情况怎么样?Java软件工程师的工资水平与哪些因素有关呢?今天小编从这两方面和大家来进行分析一下Java工程师工资待遇。Java软件工程师工资待遇情况据有关数据显示,目前,我国对软件人才的需求已达20万,并且以每年20%左右的速度增长。在未来5年内,合格软件人才的需求将远大于供给。2016年的时候…

发表回复

您的电子邮箱地址不会被公开。

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