在这之前已经搭好了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. jQueryUI Sortable 应用Demo

    最近工作用需要设计一个自由布局的页面设计.我选了jQuery UI 的 sortable ,可以拖拽,自由排序 使用很方便,写一个demo,做个记录. 第一.单项目自由排序 下图效果 代码段: < ...

  2. verilog 之语法学习

    1.使用非基数表示的十进制视为有符号数.使用基数表示的十进制被视为无符号数. 2.线网中的值被解释为无符号数,整型寄存器中的值被解释为有符号的二进制补码数,. 3.如果选择表达式的值为 x.z,或越界 ...

  3. PHP字符串的处理(三)-字符串的输出

    1.echo() echo()实际不是一个函数,是一个语言结构,不需要使用括号 <?php $str = "test"; echo $str."<br> ...

  4. python's seventh day for me set

    数据类型的补充: 对于元祖:  如果只有一个元素,并且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型. tu = ('顾清秋') tul = ('顾清秋',) print(type(tu)) ...

  5. 2014.8.8 CAD系统连接

    CDA数据库连接生产库.研发库.临时库对应3个连接名 cad = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = backupserver)(POR ...

  6. ngnix 403 forbidden的解决办法

    1.在网站根目录下新建文件index.html.index.php. 2.主要是修改nginx的配置文件nginx.conf权限为755即可访问.

  7. dubbo学习 一 dubbo概述

    1,背景     1,网站刚开时候的时候可能所有的功能业务都在一个应用里面 2,当业务不断复杂,流量不断增多的时候,就需要将原先的一个应用划分成多个独立的应用. 3,当分出来的业务越来越多的时候,应用 ...

  8. 使用CallableStatement接口调用存储过程

    直接上下代码: package com.learn.jdbc.chap07; import java.sql.CallableStatement; import java.sql.Connection ...

  9. javascript第三节

    面向对象的程序设计 1.属性类型 ECMAScript中有两种属性:数据属性和访问器属性 数据属性: configurable设置为false,表示不能从对象中删除属性. 访问器属性: 支持定义多个属 ...

  10. HBase 官方文档中文版

    地址链接: http://abloz.com/hbase/book.html 里面包含基本的API和使用说明