sfu/php-cas 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sfu/php-cas

最新稳定版本:5.0.3

Composer 安装命令:

composer require sfu/php-cas

包简介

PHP library for SFU CAS

关键字:

README 文档

README

php-cas is a library for Simon Fraser University's slightly-modified version of JASIG CAS, the Central Authentication System. It should work with standard CAS implementations, but has been customized for authorization support as well as the normal CAS authentication functionality.

Background

Most websites at SFU that use CAS rely on the mod-auth-cas Apache module, which is available in a customized form for Apache 2.2 that also provides authorization support in the form of requirements for membership within a particular SFU mailing list.

Apache 2.2 is getting pretty long in the tooth, and the module doesn't work with other web servers, so we have created a purely PHP implementation of the CAS functionality that can be integrated with existing PHP applications with a minimal amount of work.

Installation

If you're using Composer:

Just run:

php composer.phar require sfu/php-cas

php composer.phar update

php composer.phar dump-autoload

and as long as you have set up the Composer autoloader correctly, you shouldn't have to do anything else.

If you're not:

Copy src/*.php into your application in an appropriate location, and add a require() call into the application's header files to ensure the needed files are loaded (

Configuration

Within CASOptions.php is the SFU\CASOptions class which you must edit for your environment. Defaults for the SFU environment are included, so for use at SFU no modification should be needed.

Options are defined as functions for versatility, and include:

  1. ServerName() - returns the name of the CAS server
  2. ServerPort() - returns the port to contact the CAS server on
  3. ServerDirectory() - returns the toplevel path under which the CAS endpoints are found
  4. URL() - returns the base URL for each CAS endpoint, assembled from the above functions
  5. LoginURL() - relative path for the Login endpoint
  6. LogoutURL() - relative path for the Logout endpoint
  7. EmailDomain() - returns the domain name to append to usernames to create email addresses

Usage

Usage is simple, just add the following line to the top of any entry point or header file that will be loaded by a web browser:

SFU\CAS::requireLogin();

This will cause the CAS session to be checked, and if there's no currently valid session, the user will be redirected to the CAS server and then back to your app again. The second time around, there will be a GET parameter with ticket information that the CAS library will check against the CAS server, and if valid, it will create your session, logging you in.

Mailing List Based Authorization

Applicable to SFU CAS only. If you want to make it mandatory that a user be part of a particular maillist to get access, simply pass the maillist as the first parameter to requireLogin:

SFU\CAS::requireLogin("maillist-name");

Alternate Return URL

If you don't want to send the user back to the current endpoint, provide a different one as the second parameter to requireLogin:

SFU\CAS::requireLogin("maillist-name", "https://www.whatever.com/index.php");

Logout

To clear the session, call userLogout():

SFU\CAS::userLogout();

To actually log the user out of CAS, follow up with a redirector call:

SFU\CAS::redirectToLogout();

Checking authentication without redirection

In some contexts, you may not want to redirect the user when they aren't logged in, e.g. web-services style REST calls to your application. In this case, just call checkLoginStatus, optionally with a maillist parameter:

$logged_in = SFU\CAS::checkLoginStatus();
$logged_in_with_maillist = SFU\CAS::checkLoginStatus("maillist-name");

and you will receive a boolean that you can then handle yourself to return acceptable error output to your application.

Testing

Unit tests have not been created yet. In the meantime, you can do a quick test using the PHP development web server. From the tests/ folder, run:

php -S localhost:8000

and then fire up your web browser to http://localhost:8000/tests.php and you should be presented with your CAS login screen.

sfu/php-cas 适用场景与选型建议

sfu/php-cas 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 19 次下载、GitHub Stars 达 1, 最近一次更新时间为 2015 年 05 月 22 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「cas」 「jasig」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 sfu/php-cas 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 sfu/php-cas 我们能提供哪些服务?
定制开发 / 二次开发

基于 sfu/php-cas 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 19
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 19
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 4
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-05-22