在这之前已经搭好了CAS服务端 基于CAS的单点登录实战(1)-- 搭建cas服务器

PHP-Client#

php-Client是官方支持的,去官网下个最新版就好了。phpCAS

接入很简单,解压放到web目录下:

+. docs/examples/目录下都是示例文件,这里取example_simple.php为例。

+. source/cas.php 核心文件

注:可能因为版本的不同目录结构会不一样。

下面是代码示例

<?php

//
// phpCAS simple client
// // import phpCAS lib
// 引入文件
include_once('CAS.php');
// 开启log,注意目录读写权限
phpCAS::setDebug('tmp/cas.log'); // initialize phpCAS
// 四个参数分别是
// cas server 版本
// cas server 域名
// cas server 端口
// cas server 路径
phpCAS::client(CAS_VERSION_2_0, 'localhost', 8088, '/cas-server'); // 不验证SSL证书
phpCAS::setNoCasServerValidation(); // force CAS authentication
// 这个是强制认证模式,查看 client.php 可以找到集中不同的方式
// forceAuthentication
// checkAuthentication
// renewAuthentication
// 根据自己需要调用即可
phpCAS::forceAuthentication(); // 处理登出请求。cas服务端会发送请求通知客户端。如果没有同步登出,可能是服务端跟客户端无法通信(比如我的客户端是localhost, 服务端在云上)
phpCAS::handleLogoutRequests(); // at this step, the user has been authenticated by the CAS server
// and the user's login name can be read with phpCAS::getUser().
// 获取用户名
$username = phpCAS::getUser();
// 获取完整用户信息(在上一篇文章中介绍了如何扩展用户信息)
$userinfo = phpCAS::getAttributes(); // logout if desired
if (isset($_REQUEST['logout'])) {
// 这里貌似可以指定退出后返回的页面,但是我没有成功
// phpCAS::logout(['service'=>'http://localhost/cas-client/index.php']);
phpCAS::logout();
}

部署之后可以成功获取用户信息,同步登录登出。然而有个严重BUG,退出登录之后需要登录2次才能成功。。。目前还未解决

client.php 里封装了很多有用的方法,可以根据业务场景调用。

假如接入其他系统需要了解原系统的认证方式,然后视情况进行修改甚至重做。

遇到的问题:

  1. 设置phpCAS::handleLogoutRequests();后不能同步退出,是因为cas服务端无法连接测试环境的域名
  2. phpCAS::logout(['service'=>'http://localhost/cas-client/index.php']); 设置退出登录后返回的页面,但是我这里没成功过
  3. php客户端退出后需要登录2次(提交空表单或者Ctrl+F5刷新也可)才能登录。起初怀疑是缓存,然后在java服务端设置http头no-cache,结果我的2个php客户端其一可以正常登录了,另一个还是需要登录两次。。崩溃中

基于CAS的单点登录实战(2)-- 搭建cas的php客户端的更多相关文章

  1. 基于CAS的单点登录实战(1)-- 搭建cas服务器

    公司有几个系统想做SSO,然后开始研究cas.系统是Centos7 搭建CAS服务器 cas的版本比较多,先在网上搜了一下各种教程配置经验.本来想搭建最新的CAS版本,然而为了快速部署,选择了网上教程 ...

  2. [精华][推荐]CAS SSO 单点登录框架学习 环境搭建

    1.了解单点登录  SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...

  3. 手把手教你学会 基于JWT的单点登录

      最近我们组要给负责的一个管理系统 A 集成另外一个系统 B,为了让用户使用更加便捷,避免多个系统重复登录,希望能够达到这样的效果--用户只需登录一次就能够在这两个系统中进行操作.很明显这就是单点登 ...

  4. 基于SAML的单点登录介绍

    http://blog.csdn.net/csethcrm/article/details/20694993 一.背景知识: SAML即安全断言标记语言,英文全称是Security Assertion ...

  5. CAS实现单点登录SSO执行原理及部署

    一.不落俗套的开始 1.背景介绍 单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. CAS框架:CAS(Centra ...

  6. Spring Security 集成CAS实现单点登录

    参考:http://elim.iteye.com/blog/2270446 众所周知,Cas是对单点登录的一种实现.本文假设读者已经了解了Cas的原理及其使用,这些内容在本文将不会讨论.Cas有Ser ...

  7. CAS单点登录实践(spring cas client配置)

    前言: 最近的项目需要将多个站点统一登录,查阅了资料Jasig cas(Central Authentication Service)(官方站点:http://www.jasig.org/cas)使用 ...

  8. cas实现单点登录原理

    1.基于Cookie的单点登录的回顾        基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从 ...

  9. Cas(07)——建立使用Cas进行单点登录的应用

    建立使用Cas进行单点登录的应用 目录 1.1加入cas-client-core-xxx.jar到classpath 1.2配置Filter 1.2.1AuthenticationFilter 1.2 ...

随机推荐

  1. Cocos暂停和重新开始游戏

    创建按钮 cc.MenuItemFont.setFontSize(18); cc.MenuItemFont.setFontName("Arial"); var systemMenu ...

  2. Three.js会飞走飞回来的鸟

    效果图 demo import './index.css'; // stats var stats; (function(){ stats = new Stats(); document.body.a ...

  3. day-7心得

    面向对象高级语法部分 经典类vs新式类 把下面代码用python2 和python3都执行一下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  4. java之飞机大战的记分标准

    import java.awt.Image; import java.util.ArrayList; import java.util.Timer; import javax.swing.ImageI ...

  5. ssh免密连接远程服务器

    ssh免密连接远程服务器 借助ssky-keygen和ssh-copy-id工具,通过4个简单的步骤实现无需输入密码登录远程Linux主机 1 生成密钥 通过内置的工具生成RSA算法加密的密钥 ssh ...

  6. Java多线程-新特征-阻塞栈LinkedBlockingDeque

    对于阻塞栈,与阻塞队列相似.不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头. 这里要特别说明一点的是,阻塞栈是Java6的新特征.. Java为阻塞 ...

  7. s=1+2*3+4*5*6+7*8*9*10+.... C语言求解

    #include <stdio.h> /*类似斐波那契数列的计算方式 项 1 2 3 4 1 2*3 4*5*6 7*8*9*10 生成项的起始数字 1 2 4 7 和后一项的差值 1 2 ...

  8. mfs监控

    web gui 监控 gui_info.jpg (143.72 KB, 下载次数: 83) gui_most.jpg (209.36 KB, 下载次数: 82) gui_master_info.jpg ...

  9. solr开发之基本操作

    package zr.com.util; import java.io.IOException; import java.util.List; import java.util.Map; import ...

  10. App测试从入门到精通之交叉事件测试

    交叉事件测试又叫事件或者叫冲突测试.对于正在运行的应用,若进入短信,电话等其他软件响应的情况,不会影响所测试应用,且会保证应用都能正确运行.下面我来看一下关于交叉测试中,我们测试人员需要考虑的一些测试 ...