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)


相关推荐

  • ubuntu安装中文输入法搜狗_ubuntu切换中文输入法快捷键

    ubuntu安装中文输入法搜狗_ubuntu切换中文输入法快捷键Ubuntu安装中文输入法

  • 缺陷和缺陷报告_质量缺陷报告

    缺陷和缺陷报告_质量缺陷报告一、缺陷的基本概述1、缺陷的定义(重要):①软件未实现产品说明书要求的功能②软件出现了产品说明书指明不该出现的功能③软件实现了产品说明书未提到的功能④软件未实现产品说明书虽未明确提及但应该实现的目标⑤软件难以理解、不易使用、运行缓慢或者(从测试角度看)最终用户会认为不好2、缺陷属性1、缺陷的类型:功能、用户界面、文档、软件包、性能、系统/模块接口注意:需求分析、设计阶段,文档类型缺陷多;集成测试阶段,一般接口类型的缺陷多一…

  • IO与文件「建议收藏」

    IO与文件「建议收藏」IO与文件FileFile类的一个对象,代表一个文件或一个文件目录(俗称文件夹)package com.atguigu.java;import java.io.File;import java.io.IOException;public class FileTest { public static void main(String[] args) throws IOException { File file1 = new File(“hello.txt”);//相对路

  • UVALive 3135–Argus+自己定义优先队列的优先规则「建议收藏」

    UVALive 3135–Argus+自己定义优先队列的优先规则

  • NTP协议详解_ntp是安全协议吗

    NTP协议详解_ntp是安全协议吗前言NTP(NetworkTimeProtocol)网络时间协议基于UDP,用于网络时间同步的协议,使网络中的计算机时钟同步到UTC,再配合各个时区的偏移调整就能实现精准同步对时功能。提供NTP对时的服务器有很多,比如微软的NTP对时服务器,利用NTP服务器提供的对时功能,可以使我们的设备时钟系统能够正确运行。NTP报文格式NTP报文格式如上图所示,它的字段含义参考如下:L…

    2022年10月12日
  • python对文件的操作

    python对文件的操作一.python21.将字符串写入文件#-*-coding:utf-8-*-data_str=”Helloworld!!!”file_object=open(‘D:/test.txt’,’w’)file_object.write(data_str)file_object.close()2.以追加的方式写入文件#-*-coding:utf-8…

发表回复

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

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