phpcas 订阅
phpCAS
信息
操作系统
跨平台
开发语言
PHP
开源协议
LGPL
phpCAS
phpCAS 是 ITS 集中式认证服务的 PHP 客户端开发包。
收起全文
精华内容
下载资源
问答
  • phpCAS phpCAS是一个身份验证库,它允许PHP应用程序通过中央身份验证服务(CAS)服务器轻松地对用户进行身份验证。 请访问Wiki网站以获取更多信息: 可以在以下位置找到Api文档: 执照 Apereo基金会版权所有2007-...
  • 开源phpCAS程序

    2015-08-11 09:35:11
    开源phpCAS程序
  • Laravel开发-phpcas

    2019-08-28 09:54:41
    Laravel开发-phpcas Laravel框架的phpcas客户端
  • PHP使用phpCAS对接CAS单点登陆系统

    千次阅读 2019-09-11 15:22:40
    PHP使用phpCAS对接CAS单点登陆系统综述`CAS`单点登陆原理搭建`CAS SSO`SERVER服务端下载`phpCAS`客户端phpCAS客户端配置PHP开发对接注意 综述 本文档用来说明如何使用PHP对接CAS单点登陆系统。 想要对接使用CAS单点...

    综述

    本文档用来说明如何使用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']); 设置退出登录后返回的页面。
    展开全文
  • 背景使用apereo/phpcas包完成单点登录,某一次项目中,本地测试没有问题发布线上之后cas登录页出现Error Internal script failure。查找原因看到Error Internal script failure这个错误,完全不知道问题出在哪里,...

    背景

    使用apereo/phpcas包完成单点登录,某一次项目中,本地测试没有问题发布线上之后cas登录页出现Error Internal script failure。

    查找原因

    看到Error Internal script failure这个错误,完全不知道问题出在哪里,各种搜索没有找到答案,无奈进入源码。看到一个log方法,好像是用来记日志的,判断的filename存在就记录日志,继续找到看到了setDebug,在setDebug中去设置了日志文件目录之后就可以记录日志了通过日志看具体问题。

    public static function log($str)

    {

    $indent_str = ".";

    if (!empty(self::$_PHPCAS_DEBUG['filename'])) {

    // Check if file exists and modifiy file permissions to be only

    // readable by the webserver

    if (!file_exists(self::$_PHPCAS_DEBUG['filename'])) {

    touch(self::$_PHPCAS_DEBUG['filename']);

    // Chmod will fail on windows

    @chmod(self::$_PHPCAS_DEBUG['filename'], 0600);

    }

    for ($i = 0; $i < self::$_PHPCAS_DEBUG['indent']; $i++) {

    $indent_str .= '| ';

    }

    // allow for multiline output with proper identing. Usefull for

    // dumping cas answers etc.

    $str2 = str_replace("\n", "\n" . self::$_PHPCAS_DEBUG['unique_id'] . ' ' . $indent_str, $str);

    error_log(self::$_PHPCAS_DEBUG['unique_id'] . ' ' . $indent_str . $str2 . "\n", 3, self::$_PHPCAS_DEBUG['filename']);

    }

    }

    public static function setDebug($filename = '')

    {

    if ($filename != false && gettype($filename) != 'string') {

    phpCAS :: error('type mismatched for parameter $dbg (should be false or the name of the log file)');

    }

    if ($filename === false) {

    self::$_PHPCAS_DEBUG['filename'] = false;

    } else {

    if (empty ($filename)) {

    if (preg_match('/^Win.*/', getenv('OS'))) {

    if (isset ($_ENV['TMP'])) {

    $debugDir = $_ENV['TMP'] . '/';

    } else {

    $debugDir = '';

    }

    } else {

    $debugDir = DEFAULT_DEBUG_DIR;

    }

    $filename = $debugDir . 'phpCAS.log';

    }

    if (empty (self::$_PHPCAS_DEBUG['unique_id'])) {

    self::$_PHPCAS_DEBUG['unique_id'] = substr(strtoupper(md5(uniqid(''))), 0, 4);

    }

    self::$_PHPCAS_DEBUG['filename'] = $filename;

    self::$_PHPCAS_DEBUG['indent'] = 0;

    phpCAS :: trace('START ('.date("Y-m-d H:i:s").') phpCAS-' . PHPCAS_VERSION . ' ******************');

    }

    }

    结论

    终于在日志里看出了问题在写入session时文件没有写入权限导致cas登录失败

    展开全文
  • phpcas 登录跳转问题//导入casrequire_once("CAS.php");phpCAS::client(CAS_VERSION_2_0,'localhost',8443,'cas',true);phpCAS::setNoCasServerValidation();phpCAS::forceAuthentication();if...

    phpcas 登录跳转问题

    //导入cas

    require_once("CAS.php");

    phpCAS::client(CAS_VERSION_2_0,'localhost',8443,'cas',true);

    phpCAS::setNoCasServerValidation();

    phpCAS::forceAuthentication();

    if(phpCAS::isAuthenticated()==true){

    echo phpCAS::getUser();

    }else{

    echo "abc";

    }

    ?我现在在所有的php的所有的头里面加了这段代码。相当于是java里面的过滤器。?

    现在问题出来了,我如果没有认证,访问php页面的时候会跳到cas登录页面,我现在的要求是:?

    不管是否登录都能访问到php页面。1.如果已经登录,则显示用户名2.如果没有登录,则打印abc。?

    上述代码只满足第一点,第二点不满足。请问这个应该怎么实现?

    1 楼

    cstarclear

    2011-09-15

    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议我要评论

    47d507a036d4dd65488c445c0974b649.png

    立即提交

    专题推荐064df72cb40df78e80e61b7041ee044f.png独孤九贱-php全栈开发教程

    全栈 100W+

    主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

    7dafe36c040e31d783922649aefe0be1.png玉女心经-web前端开发教程

    入门 50W+

    主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

    04246fdfe8958426b043c89ded0857f1.png天龙八部-实战开发教程

    实战 80W+

    主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

    展开全文
  • phpCAS 客户端保护的 PHP webapp ( ) 使用 phpCAS 客户端 (v1.3.3) 保护 Web 应用程序的 PHP 演示。 使用 Composer 安装依赖项: php composer.phar install 。 使用您最喜欢的 xAMP 工具,将www作为文档根目录...
  • ESUP-Portail phpCAS-开源

    2021-04-24 10:27:15
    phpCAS是ITS中央身份验证服务(http://www.yale.edu/tp/auth/)PHP接口,用于由ESUP-Portail组(http://www.esup-portail.org)开发PHP Web应用程序。 。
  • phpcas客户端

    2015-04-21 22:29:49
    cas sso的php客户端,带demo
  • phpCAS 单点登录

    千次阅读 2019-08-15 19:41:35
    下载phpCAS 我的文件链接https://github.com/15657318057/phpCAS-Example/tree/master/phpcas 修改config.php 新建示例文件 如verify.php config.php <?php /** * The purpose of this central config.....
    
    

     config.php

    <?php
    
    /**
     * The purpose of this central config file is configuring all examples
     * in one place with minimal work for your working environment
     * Just configure all the items in this config according to your environment
     * and rename the file to config.php
     *
     * PHP Version 5
     *
     * @file     config.php
     * @category Authentication
     * @package  PhpCAS
     * @author   Joachim Fritschi <jfritschi@freenet.de>
     * @author   Adam Franco <afranco@middlebury.edu>
     * @license  http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
     * @link     https://wiki.jasig.org/display/CASC/phpCAS
     */
    $phpcas_path = '../../source/';
    ///
    // Basic Config of the phpCAS client //
    ///
    // Full Hostname of your CAS Server
    $cas_host = '服务器地址';
    // Context of the CAS Server
    $cas_context = '/cas';
    // Port of your CAS server. Normally for a https server it's 443
    $cas_port = 80;
    // Path to the ca chain that issued the cas server certificate
    $cas_server_ca_cert_path = '/path/to/cachain.pem';
    //
    // Advanced Config for special purposes //
    //
    // The "real" hosts of clustered cas server that send SAML logout messages
    // Assumes the cas server is load balanced across multiple hosts
    $cas_real_hosts = array('cas-real-1.example.com', 'cas-real-2.example.com');
    // Client config for cookie hardening
    $client_domain = 'localhost';
    $client_path = 'phpcas';
    $client_secure = false;
    $client_httpOnly = false;
    $client_lifetime = 0;
    // Database config for PGT Storage
    $db = 'pgsql:host=localhost;dbname=phpcas';
    //$db = 'mysql:host=localhost;dbname=phpcas';
    $db_user = 'phpcasuser';
    $db_password = 'mysupersecretpass';
    $db_table = 'phpcastabel';
    $driver_options = '';
    ///
    // End Configuration -- Don't edit below //
    ///
    // Generating the URLS for the local cas example services for proxy testing
    if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
        $curbase = 'https://' . $_SERVER['SERVER_NAME'];
    } else {
        $curbase = 'http://' . $_SERVER['SERVER_NAME'];
    }
    if ($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
        $curbase .= ':' . $_SERVER['SERVER_PORT'];
    }
    $curdir = dirname($_SERVER['REQUEST_URI']) . "/";
    // CAS client nodes for rebroadcasting pgtIou/pgtId and logoutRequest
    $rebroadcast_node_1 = 'http://cas-client-1.example.com';
    $rebroadcast_node_2 = 'http://cas-client-2.example.com';
    // access to a single service
    $serviceUrl = $curbase . $curdir . 'example_service.php';
    // access to a second service
    $serviceUrl2 = $curbase . $curdir . 'example_service_that_proxies.php';
    $pgtBase = preg_quote(preg_replace('/^http:/', 'https:', $curbase . $curdir), '/');
    $pgtUrlRegexp = '/^' . $pgtBase . '.*$/';
    $cas_url = 'https://' . $cas_host;
    if ($cas_port != '443') {
        $cas_url = $cas_url . ':' . $cas_port;
    }
    $cas_url = $cas_url . $cas_context;
    // Set the session-name to be unique to the current script so that the client script
    // doesn't share its session with a proxied script.
    // This is just useful when running the example code, but not normally.
    session_name(
        'session_for:'
        . preg_replace('/[^a-z0-9-]/i', '_', basename($_SERVER['SCRIPT_NAME']))
    );
    // Set an UTF-8 encoding header for internation characters (User attributes)
    header('Content-Type: text/html; charset=utf-8');
    ?>
    

    verify.php

    <?php
    /**
     *   Example for a simple cas 2.0 client
     *
     * PHP Version 5
     *
     * @file     example_simple.php
     * @category Authentication
     * @package  PhpCAS
     * @author   Joachim Fritschi <jfritschi@freenet.de>
     * @author   Adam Franco <afranco@middlebury.edu>
     * @license  http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
     * @link     https://wiki.jasig.org/display/CASC/phpCAS
     */
    // Load the settings from the central config file
    require_once 'config.php';
    // Load the CAS lib
    require_once 'CAS.php';
    // Enable debugging
    phpCAS::setDebug();
    // Enable verbose error messages. Disable in production!
    phpCAS::setVerbose(true);
    // Initialize phpCAS
    phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context);
    // For production use set the CA certificate that is the issuer of the cert
    // on the CAS server and uncomment the line below
    // phpCAS::setCasServerCACert($cas_server_ca_cert_path);
    // For quick testing you can disable SSL validation of the CAS server.
    // THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
    // VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
    phpCAS::setNoCasServerValidation();
    // force CAS authentication
    phpCAS::forceAuthentication();
    
    if (isset($_REQUEST['logout'])) {
    	phpCAS::logout();
    }
    $account = phpCAS::getAttribute('参数名');
    echo $account;
    // 或添加成功后的跳转页面
    // header("Location:http://www.baidu.com");
    
    ?>
    

    访问localhost://phpcas/verify.php 会到服务器进行认证,未认证跳转到认证页,认证后跳转到目标页或返回用户信息。

    代码需要自定义的部分是中文内容(入门小练习 ok 溜)

     

    展开全文
  • phpCAS 接入很简单,解压放到web目录下: +.docs/examples/目录下都是示例文件,这里取example_simple.php为例。 +.source/cas.php核心文件 注:可能因为版本的不同目录结构会不一样。 下面是代码示例 <?php /...
  • php使用phpCAS接入CAS SSO

    千次阅读 2014-08-18 11:23:20
    源码:https://github.com/Jasig/phpCAS 文档:https://wiki.jasig.org/display/CASC/phpCAS+examples 安 装 ubuntu下使用pear安装 sudo pear install ...
  • PHPCAS客户端搭建教程

    2020-03-20 23:03:13
    PHPCAS客户端搭建教程 ** 一. 准备 PhpStudy环境搭建(自行搜索搭建方法,我挑的是最简单的支持解析PHP环境的PhpStudy;如若你有其他支持解析php的服务器环境,那就不需要再来搞这个PhpStudy环境了。) phpCAS...
  • phpCAS使用

    2020-04-01 18:05:26
    CAS
  • 详细教程见 ... phpCAS::client(CAS_VERSION_2_0, ‘ssaao.aaaaaaa.com’,443,""); //phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context); $cas_ho...
  • phpCAS源码以及调用示例(redis管理session,解决无法logout的问题)
  • CAS 是目前比较流行的单点登录协议,官方提供了 php 版本的 client 端 phpCAS,到目前为止其编码风格还一直停留在 PEAR 时代,连命名空间都没有使用。好在 phpCAS 支持 composer 引入,做过几个 Laravel 项目引入也...
  • thinkphp5引入phpCAS单点登录

    千次阅读 2018-12-09 23:10:34
    一、前提:CAS服务器搭建完成 这个不是本次的重点,不多讲。...二、下载phpCAS客户端 php客户端下载:https://github.com/apereo/phpCAS php客户端配置的注意事项等内容:https://apereo.atlassian.net/wi...
  • 官方文档:https://apereo.atlassian.net/wiki/spaces/CASC/pages/103252517/phpCAS 下载地址:https://apereo.atlassian.net/wiki/spaces/CASC/pages/103252517/phpCAS 无法获取Attributes 原理:CAS_VERSION_2...
  • 源码:https://github.com/Jasig/phpCAS文档:https://wiki.jasig.org/display/CASC/phpCAS+examples安 装ubuntu下使用pear安装sudo pear install http://downloads.jasig.org/cas-clients/php/current.tgz配置//CAS...
  • 使用如上代码,只会跳转到CAS服务器端退出页面 ...phpCAS::logout(); //单点登录退出 会退出到服务器的指定地址 我们不想要 //用以下操作 $service = 'www.baidu.com'; phpCAS::logoutWithRedirectService($servi...
  • php cas单点登录

    千次阅读 2016-07-14 22:59:06
    一、CAS简介 1、结构体系 从结构体系看, CAS 包括两部分: CAS Server 和 CAS Client 。 1.1、 CAS Server CAS Server 负责完成对用户的认证工作 , 需要独立部署 , CAS Server 会处理用户名 / 密码等凭证...
  • 解决phpcas中的单点登出问题

    千次阅读 2013-04-19 09:55:18
    问题描述 系统中有一个单点登陆服务器cas...然而,当用户从uc登出,应用phpcas的i却依然能访问。 单点登出流程 我们把i和uc统称为客户端,把cas称为服务端。 当用户从客户端发起登出请求时,客户端会把用
  • To make phpCAS correctly work, you need to fit the following requirements: CURL 7.5+ PHP 4.3.1+, PEAR DB Apache 2.0.44+ 可是我看到网上好多朋友说要下载openssl,可这里没有说要下openssl啊,我对...
  • phpCAS单点登出回调URL

    2019-08-22 16:12:35
    bean id="logoutAction" class="org.jasig.cas.web.flow.LogoutAction" p:servicesManager-ref="servicesManager" p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"/> 将CAS-SERVLET...
  • PHP CAS ServerPHP CAS Server is a PHP implementation of CAS Server Protocol based on Laravel.FeaturesCAS protocol v1/v2/v3 (proxy is supported now!).User management, including adding/editing/searching...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,946
精华内容 5,178
关键字:

phpcas