zoukankan      html  css  js  c++  java
  • 基于CAS的单点登录实战(2)-- 搭建cas的php客户端

    在这之前已经搭好了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客户端其一可以正常登录了,另一个还是需要登录两次。。崩溃中
  • 相关阅读:
    立波育儿百科,在手机上的育儿百科使您随时随地查看别人的育儿心得、专家的精彩讲解,使怀孕、养育孩子成为了一种乐趣
    把表单上的数据清除就可以了
    忽略特殊文件
    git/github运用
    Git中三种文件状态及其转换
    git取消文件跟踪
    学习 JSF 2.0 新链接、RefCards、样例、JSF Fu...
    JBoss Seam 的前景
    爆笑囧人囧事 2009 大合集!
    学习 JSF 2.0 新链接、RefCards、样例、JSF Fu...
  • 原文地址:https://www.cnblogs.com/dapianzi/p/7207063.html
Copyright © 2011-2022 走看看