CAS的php客户端实践—单点登录整合php程序

兄弟近日尝试将一个php程序以单点登录方式和原有的系统整合在一起。
验证服务器选用的是CAS,其提供有相应的php客户端。
整个过程如下:
1、搭建CAS服务器
2、搭建php应用环境
3、下载相应的php库
4、修改php应用环境配置
5、测试cas的php客户端
6、修改原有的程序,使用CAS来完成登录。

具体细节如下:
一、搭建CAS服务器
      这个比较简单,网上文章也比较多,我就不罗嗦了。基本步骤为:1、制作签名 2、打开SSL 3、部署CAS服务 4、利用cas的java客户端拦截应用。

二、搭建php应用环境
      现在流行的组合是apache+php4+mysql.大家可以搜索相关资料。而且在windows环境下,有几个整合了三个的傻瓜服务程序如:APMXE、XAMPP、easyphp等,大家可以下载下来,直接运行即可,不用在自己去配置了。

三、下载相应的php库
     要想在php环境下连接CAS服务,就必须有php下的客户端。而在CAS的网站上提供有相应的客户端库下载phpcas-0.6.0-RC7.zip.
     该客户端使用了PEAR库,所以还得下载PEAR及PEAR的DB库。因为其也使用了SSL,所以还得下载openssl。
     下载完成后将,安装openssl。并将三个php库,分别解压到php的includes目录下(其实目录可以自行定义)。

四、修改php的应用环境配置
      1、修改php.ini文件中的include_path,将三个库的目录加入到搜索路径中(使用";"隔开)
      2、检查php.ini文件中的extentions看curl和domxml是否打开,如果没有请打开,phpcas使用了curl来连接ssl。
      3、检查一下php引擎的extentions目录看有没有对应的dll(与php.ini文件中的文件名一样)。如果没有的话就从比较完整的php4中拷贝吧。(一般会有的除非你的php引擎是被人精简的)

五、测试一下cas的php客户端
      将phpcas-0.6.0-RC7.zip中的docs目录下的examples的example_simple.php解压到apache的htdocs下。
      启动apache服务。
      在浏览器中访问example_simple.php程序。如果看到登录界面,并且登录完毕后,回到example_simple.php下,并输出了你的用户名。则表示一切ok了。

六、修改原有的程序,使用CAS来完成登录
      如何修改呢,那就看你的应用了。看你如何整合了,应用CAS只是负责验证,而不负责权限等的分配。
      一般有两个方法:1、对应法,在php应用中建立有一个对应关系表。通过获得CAS的用户名称来查找对应的用户。
                              2、一致法,在php应用中的用户和CAS的用户名称是一致的。获得CAS给的用户名,就直接分配权限。

cas的php 客户端使用关键性代码如下
         include_once('CAS.php');
//可以不用,用于调试,可以通过服务端的cas.log看到验证过程。
phpCAS::setDebug();

// 初始化phpcas
phpCAS::client(CAS_VERSION_2_0,'服务地址',端口号,'cas的访问地址');
例如:phpCAS::client(CAS_VERSION_2_0,'localhost',8443,'cas');

// 不使用SSL服务校验
phpCAS::setNoCasServerValidation();

// 访问CAS的验证
phpCAS::forceAuthentication();

这时候就验证完毕了
获得用户名可以通过phpCAS::getUser()

//登出
if (isset($_REQUEST['logout'])) {
        phpCAS::logout();
}

至此你的php应用就具有了单点登录能力,顺便说一下,现在有很多php的开源程序已经具有连接CAS服务器的能力。这给我们做单点登录应用提供了很大的方便,优先选择吧呵呵。

cas php的更多相关文章

  1. .NET应用和AEAI CAS集成详解

    1 概述 数通畅联某综合SOA集成项目的统一身份认证工作,需要第三方系统配合进行单点登录的配置改造,在项目中有需要进行单点登录配置的.NET应用系统,本文专门记录.NET应用和AEAI CAS的集成过 ...

  2. SuperMap-iServer-单点登录功能验证(CAS)

    SuperMap-iServer-单点登录功能验证(CAS) 1.测试目的: 验证SuperMap-iServer使用CAS单点登录的功能是否正常. 2.测试环境: SuperMap-iServer8 ...

  3. 集成基于CAS协议的单点登陆

    相信大家对单点登陆(SSO,Single Sign On)这个名词并不感到陌生吧?简单地说,单点登陆允许多个应用使用同一个登陆服务.一旦一个用户登陆了一个支持单点登陆的应用,那么在进入其它使用同一单点 ...

  4. 【Java并发编程实战】-----“J.U.C”:CAS操作

    CAS,即Compare and Swap,中文翻译为"比较并交换". 对于JUC包中,CAS理论是实现整个java并发包的基石.从整体来看,concurrent包的实现示意图如下 ...

  5. 多线程同步工具——CAS原子变量

    这是我参考的一篇文章<基于CAS的乐观锁实现>,讲述的是一种需要CPU支持的执行技术CAS(Compare and Swap). 首先理解什么是原子性操作,意思是不能再拆分的操作,例如改写 ...

  6. CAS FOR WINDOW ACTIVE DIRECTORY SSO单点登录

    一.CAS是什么? CAS(Central Authentication Service)是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(支持 ...

  7. CAS Client集群环境的Session问题及解决方案

    [原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 之前写过一篇文章,介绍单点登录的基本原理.这篇文章重点介绍开源单点登录系统CAS的登录和注销的实现方法.并结合实际工作中碰到的问题,探讨 ...

  8. cas单点登录搭建

    Cas Server下载:http://developer.jasig.org/cas/ Cas Client下载:http://developer.jasig.org/cas-clients/ 测试 ...

  9. CAS环境搭建

    实验背景: 系统环境: Windows XP  |  SUN JDK1.6U4 | Tomcat6.0.14 | CAS Server 3.1.1 + CAS Client 2.1.1 主机完整名称: ...

  10. ovirt配置为cas登录

    准备工作 Ovirt测试机.CAS服务器.AD服务器 cas.crt -- CAS服务器的CA证书 allwinner.cer -- CAS服务器的证书颁发机构根证书 Ovirt测试机要求:apach ...

随机推荐

  1. WebService远程调用(代码调用)

    在做多个系统集成的时候,由于各系统厂商采用不同的架构,在项目实施前期,各业务对业务理解不够深入,系统接口可能会有较多变化, 在此背景下,动态调用webserivce就变得灵活了,降低了系统集成的耦合度 ...

  2. JavaScript jQuery 笔记

    资料来源:http://www.w3school.com.cn/jquery/index.asp http://files.cnblogs.com/files/defineconst/jQuery.r ...

  3. python3.0与python2.0有哪些不同

    python3的语法跟python2哪里变了. 1. python3中1/2终于等于0.5 了 2. print "Hello World"变成了print("Hello ...

  4. vue 组件库

    iView https://www.iviewui.com/ Radon UI https://luojilab.github.io/radon-ui/#!/ Element http://eleme ...

  5. upper()

    upper() 用于把字符串中的小写字母转换成大写字母 In [1]: str = "Hello World" In [2]: str.upper() Out[2]: 'HELLO ...

  6. windows下配置VisualSVN Server服务器

    下载安装文件: 服务端安装文件:VisualSVN-Server-1.6.2 客户端安装文件:TortoiseSVN-1.5.5.14361-win32-svn-1.5.4 上面是我使用的版本. 在V ...

  7. 编写高性能的 Lua 代码

    前言 Lua是一门以其性能著称的脚本语言,被广泛应用在很多方面,尤其是游戏.像<魔兽世界>的插件,手机游戏<大掌门><神曲><迷失之地>等都是用Lua来 ...

  8. openstack将本地实例迁移至ceph存储中

    需求: 最近在openstack上线了ceph存储,创建虚拟机和云硬盘都基于ceph卷进行存储和创建,但是之前openstack用的是本地存储,创建的所有实例都在本地文件中,当实例重启之后,opens ...

  9. JS-检测浏览器类型及版本

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. vux组件绑定事件

    我一开始是这样绑定事件的,但是没有效果: <box gap="15px 45px"> <x-button plain type="primary&quo ...