PHP使用phpCAS对接CAS单点登陆系统

  • 综述
  • `CAS`单点登陆原理
  • 搭建`CAS SSO`SERVER服务端
  • 下载`phpCAS`客户端
  • phpCAS客户端配置
  • PHP开发对接
  • 注意

综述

本文档用来说明如何使用PHP对接CAS单点登陆系统。

想要对接使用CAS单点登陆,我们首先需要了解什么是单点登陆。本博文主要对下面几项进行说明:

  1. 了解CAS单点登录原理解析
  2. 搭建CAS SSOSERVER服务端;
  3. 下载phpCAS客户端
  4. phpCAS客户端配置
  5. 进行PHP开发对接

CAS单点登陆原理

关于CAS单点登陆原理,本人查到一篇讲解的比较详细的文章:https://www.cnblogs.com/lihuidu/p/6495247.html 此文章讲解的非常通俗易懂。

搭建CAS SSOSERVER服务端

关于此类教程文章推荐查看:https://www.cnblogs.com/jpeanut/tag/CAS/

下载phpCAS客户端

  1. phpCAS客户端下载:https://github.com/apereo/phpCAS
  2. phpCAS客户端配置的注意事项说明:https://apereo.atlassian.net/wiki/spaces/CASC/pages/103252517/phpCAS
  3. phpCAS客户端的要求说明:https://apereo.atlassian.net/wiki/spaces/CASC/pages/103252625/phpCAS+requirements

注意:PHP配置文件php.ini需要开启php_curl,找到 ;extension=php_curl.dll ,将该句前面的分号去掉即可,改为 extension=php_curl.dll

phpCAS客户端配置

下载完成之后可得到一个压缩包文件,解压之后文件夹存在sourcesource文件夹下包含CAS文件夹和CAS.php文件。

创建自己的PHP项目,至于用什么框架,和开发工具,这儿就不说了,各有各的需求。将同步下来的代码的source目录拷贝到项目中,可以改名phpCAS之类的,以作区分。

项目中怎么使用呢?之后我们开始讲解如何开发配置:

  1. source文件夹放到开发项目的根目录下;
  2. 在项目根目录下新建config.php文件,用于CAS配置;
  3. 在项目根目录下新建index.php文件,由于首页访问;

config.php文件代码如下:

<?php/*** ==============================================* Created by SaiJia Technology.* Author: ZhiHuaWei <zhihua_wei@foxmail.com>* Date: 2019/9/3 11:04* Project: PHP对接CAS单点登陆系统* Power: CAS配置文件* ==============================================*/# 1 CAS Server 主机域名
# 此配置是你搭建的CAS SSO SERVER服务的域名
$cas_host = 'www.qingshanfrom.xyz';# 2 CAS Server 路径
# 此配置是你搭建的CAS SSO SERVER服务的路径
$cas_context = '/cas';// 3 CAS server 端口
# 此配置是你搭建的CAS SSO SERVER服务的端口
$cas_port = 8443;// 4 CAS server 证书
# 此配置是你搭建的CAS SSO SERVER服务的证书文件
$cas_server_ca_cert_path = './ssoserver.cer';

PHP开发对接

index.php文件代码如下:

<?php/*** ==============================================* Created by SaiJia Technology.* Author: ZhiHuaWei <zhihua_wei@foxmail.com>* Date: 2019/9/3 11:04* Project: PHP对接CAS单点登陆系统* Power: 主文件* ==============================================*/# 1 引入配置文件 | CAS.PHP文件
require_once 'config.php';
require_once 'phpCas/CAS.php';# 2 开启phpCAS debug
phpCAS::setDebug();# 3 初始化phpCAS,参数说明:
# a) CAS协议版本号
# b) cas server的域名
# c) cas server的端口号
# d) cas server的项目访问路径
phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context);# 4 开启设置证书验证。如果是开发环境可将此注释,如果是生产环境为了安全性建议将此开启
// phpCAS::setCasServerCACert($cas_server_ca_cert_path);# 5 不为CAS服务器设置SSL验证
# 为了快速测试,您可以禁用CAS服务器的SSL验证。此建议不建议用于生产环境。验证CAS服务器对CAS协议的安全性至关重要!
phpCAS::setNoCasServerValidation();# 6 这里会检测服务器端的退出的通知,就能实现php和其他语言平台间同步登出了
# 处理登出请求。cas服务端会发送请求通知客户端。如果没有同步登出,可能是服务端跟客户端无法通信(比如我的客户端是localhost, 服务端在云上)
phpCAS::handleLogoutRequests();# 7 进行CAS服务验证,这个方法确保用户是否验证过,如果没有验证则跳转到验证界面
# 这个是强制认证模式,查看 CAS.php 可以找到几种不同的方式:
# a) forceAuthentication - phpCAS::forceAuthentication();
# b) checkAuthentication - phpCAS::checkAuthentication();
# c) renewAuthentication - phpCAS::renewAuthentication();
# 根据自己需要调用即可。
$auth = phpCAS::forceAuthentication();
if ($auth) {# 8 验证通过,或者说已经登陆系统,可进行已经登陆之后的逻辑处理...# 获得登陆CAS用户的名称$user_name = phpCAS::getUser();echo $user_name . '已经成功登陆...<br>';# 9 你还可打印保存的phpCAS session信息print_r($_SESSION);# 10 还可获取有关已验证用户的属性,例如:$uid = phpCAS::getAttribute('id');# 关于此部分用户属性数据设置说明:https://my.oschina.net/liucao/blog/479755$attr = phpCAS::getAttributes();print_r($attr);# 11 进行退出的相关操作# 在你的PHP项目中处理完相应的退出逻辑之后,还需执行phpCAS::logout()进行CAS系统的退出# 当我们访问cas服务端的logout的时候,cas服务器会发送post请求到各个已经登录的客户端//phpCAS::logout();# 登出方法一:登出成功后跳转的地址//phpCAS::setServerLoginUrl("https://192.168.1.120:80/cas/logout?embed=true&service=http://localhost/phpCasClient/user.php?a=login");//phpCAS::logout();# 登出方法二:退出登录后返回地址//$param = array("service" => "http://cas.wzh.com");//phpCAS::logout($param);} else {# 12 验证未通过,说明未进行登陆# 将会跳转回你配置的CAS SSO SERVER服务的域名;# 例如:https://www.qingshanfrom.xyz:8443/cas/login?service=http%3A%2F%2Fcas.wzh.com%2F# 在你输入正确的用户名和密码之后CAS会自动跳转回service=http%3A%2F%2Fcas.wzh.com%2F此地址# 在此你可以处理验证未通过的各种逻辑echo '还未登陆,跳转到CAS进行登陆...<br>';
}

注意

  1. 如果无法获取Attributes,请将CAS_VERSION_2_0改成CAS_VERSION_3_0,相关设置说明:https://my.oschina.net/liucao/blog/479755;
  2. 设置phpCAS::handleLogoutRequests();后不能同步退出,可能是因为cas服务端无法连接测试环境的域名。当我们访问cas服务端的logout的时候,cas服务器会发送post请求到各个已经登录的客户端;
  3. phpCAS::logout(['service'=>'http://cas.wzh.com']); 设置退出登录后返回的页面。

PHP使用phpCAS对接CAS单点登陆系统相关推荐

  1. cas单点登陆系统-casServer搭建

    最近工作比较忙,空闲的时间在搞单点登陆系统,自己写了一套SSO在GitHub上,过程走通了.通过这个例子,自己熟悉了流程,而且破天荒的使用了抽象设计模式,并且熟悉了cookies和session的使用 ...

  2. SpringBoot 简单实现仿CAS单点登录系统

    SpringBoot 简单实现仿CAS单点登录系统 新境界开源开源SSO项目介绍 新境界开源SSO项目实现原理大致如下: 新境界开源SSO项目登录流程介绍 新境界开源SSO项目授权登录流程介绍 新境界 ...

  3. 微服务版单点登陆系统(SSO)实践

    文章目录 认证步骤 JWT令牌组成 auth项目 自定义令牌类型 resource项目 单点登陆系统简介 背景分析 单点登陆系统概述 单点登陆系统解决方案设计 单点登陆系统初步设计 服务设计 工程结构 ...

  4. cas client 更新ticket_有人知道 cas单点登录系统是怎么样取得proxyticket的?

    展开全部 CAS 原理和协议 从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client.CAS Server 需要独立部署,主要负责62616964757a686964616 ...

  5. 08-微服务版单点登陆系统(SSO)实践

    文章目录 单点登陆系统简介 背景分析 单点登陆系统概述 单点登陆系统解决方案设计 单点登陆系统初步设计 服务设计 工程结构设计 SSO父工程创建及初始化 创建父工程 父工程pom文件初始配置 系统基础 ...

  6. CAS单点登录系统的实现

    CAS单点登录系统的实现 前言 一.CAS思路 二.代码实现 环境准备 代码实现 2.1 MTV系统前端判断是否登录,依据前端cookie是否存在用户信息 2.2 MTV系统前端判断链接是否携带临时票 ...

  7. 五、微服务版单点登陆系统(SSO)

    微服务版单点登陆系统(SSO)实践 文章目录 微服务版单点登陆系统(SSO)实践 一.单点登陆系统简介 1. 背景分析 2. 单点登陆系统概述 3. 单点登陆系统解决方案设计 二.单点登陆系统初步设计 ...

  8. 微服务版单点登陆系统(SSO)

    单体架构中的用户的状态的存储是如何实现的? 单点登陆系统概述 单点登录,英文是 Single Sign On(缩写为 SSO).即多个站点共用一台认证授权服务器,用户在其中任何一个站点登录后,可以免登 ...

  9. 09-微服务版单点登陆系统(SSO)实践

    目录 单点登陆系统简介 背景分析 单点登陆系统概述 单点登陆系统解决方案设计 单点登陆系统初步设计 服务设计 工程结构设计 SSO父工程创建及初始化 创建父工程 父工程pom文件初始配置 系统基础服务 ...

最新文章

  1. 解决list-style-type属性失效
  2. 如何解决普通用户使用sudo找不到命令
  3. linux svn 撤销del,svn delete-删除文件和目录的实例
  4. 能分清直方图和柱状图,你就是图表届的“头号”玩家|图表家族#36
  5. POJ2481-Cows【树状数组】
  6. 认识Java异步编程
  7. Instruments性能优化-Core Animation
  8. tornado httpserver
  9. python | while循环与for循环 | 循环嵌套 | pass通用类型,循环整体结束或开始下一轮循环
  10. Centos6.3搭建cactinagios
  11. linux 下常用操作命令
  12. 秒杀面试 - 程序员面试宝典
  13. inode客户端linux 怎样运行,H3C_iNode智能客户端安装指导(Linux)
  14. Android移动开发基础案例教程第2版课后习题
  15. 2013年计算机毕业生流向,2013年计算机专业应届毕业生自我鉴定
  16. LeetCode739. Daily Temperatures
  17. AI2的mosaic和Aristo项目简介
  18. ANDROID 65536错误
  19. 匈牙利算法的python实现
  20. 在一起计时器_设计作品|最佳倒数计时器设计分析「附原型实例」

热门文章

  1. T156530 儒略历-传智杯-练习赛
  2. ubuntu下使用mosquitto与分析
  3. 在线查字典/汉语字典大全/字典查询网站源码开发搭建
  4. 6 2018-SAE-based classification of school-aged children with ASD using functional magnetic resonanc
  5. 解密支付宝所谓黑科技神码
  6. 【学术】可以分享一下关于“社会计算”有哪些国内外顶级会议吗?
  7. 想在自媒体平台出爆文,这几个爆文素材采集的方法不能丢
  8. 一名优秀的Web前端开发工程师的成长之路:如何学习前端开发知识以及书籍推荐
  9. 如何从零自学成为前端工程师,怎么学习?怎么选老师?
  10. 程序员求职之道(《程序员面试笔试宝典》)之面试笔试技巧?