PHPackages                             lyn-huang/laravel-cas-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. lyn-huang/laravel-cas-client

ActiveLibrary

lyn-huang/laravel-cas-client
============================

Laravel CAS client package for SSO and SLO integration.

v1.0.0(today)00MITPHPPHP ^7.4 || ^8.0CI passing

Since Aug 28Pushed today1 watchersCompare

[ Source](https://github.com/LynHuang/laravel-cas-client)[ Packagist](https://packagist.org/packages/lyn-huang/laravel-cas-client)[ RSS](/packages/lyn-huang-laravel-cas-client/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (4)Versions (2)Used By (0)

Laravel CAS Client
==================

[](#laravel-cas-client)

一个 Laravel 应用的 **CAS (Central Authentication Service) 客户端** Composer 包,为已有 Laravel 项目提供 **SSO 单点登录** 与 **SLO 单点登出** 接入能力,默认与 [`lyn-huang/laravel-cas-server`](https://github.com/LynHuang/laravel-cas-server) 配套使用,同时也兼容任何标准 CAS 1.0 / 2.0 / 3.0 协议的服务器。

✨ 功能特性
------

[](#-功能特性)

- 🔐 **SSO 单点登录** — 整页跳到 CAS 服务器,一次登录多个应用共享会话
- 🔄 **SLO 单点登出** — 一处登出,通过 SAML 风格的回调广播到所有客户端
- 🎫 **协议兼容** — CAS 1.0 / 2.0 / 3.0,JSON / XML 双响应格式,4 种校验端点
- 🛡️ **中间件鉴权** — `cas.auth` 中间件 + 3 种可插拔认证适配器(Guard / Header / Attribute)
- 🔌 **契约可替换** — `UserResolver` / `ResponseBuilder` / `AuthStateChecker` 三大契约,改 config 一行就能切换实现
- 📢 **事件体系** — 6 个细粒度事件,业务方可监听做埋点 / 审计 / 通知
- 🎨 **双响应模式** — `redirect` 模式给后端渲染,`json` 模式给前后端分离
- 📦 **Laravel 风格** — ServiceProvider + Facade + Middleware + Artisan 命令,接入自然

📋 环境要求
------

[](#-环境要求)

依赖版本PHP^7.4 || ^8.0Laravel^8.0 || ^9.0 || ^10.0 || ^11.0guzzlehttp/guzzle^6.5 || ^7.0 || ^8.0> 无需数据库迁移,无内置路由,无内置 Controller — 包只提供"能力",业务方自己决定怎么用。

⚡ 快速安装
------

[](#-快速安装)

```
# 1. 安装
composer require lyn-huang/laravel-cas-client

# 2. 发布配置 + 接入示例 stub
php artisan cas-client:install

# 3. 配置 .env
# CAS_SERVER=https://cas.example.com
# CAS_SERVICE=https://app.example.com/cas/callback
# CAS_LOGOUT_CALLBACK=https://app.example.com/cas/logout-callback
# CAS_RESPONSE_MODE=json

# 4. 在业务路由里调一行 CasManager
```

> 详细步骤见 [01 · 快速安装](./docs/01-quickstart.md)。

🚀 快速开始
------

[](#-快速开始)

最小接入代码(在 `routes/web.php` 或 `routes/api.php` 里):

```
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use LynHuang\LaravelCasClient\Services\CasManager;

Route::get('/cas/callback', function (Request $request, CasManager $casManager) {
    $result = $casManager->handleCallback($request->query('ticket'));

    // ↓ 在这里由业务方自行决定如何落地登录态
    // Auth::loginUsingId($result['resolved_user']['id']);

    return response()->json($result);
});

Route::get('/profile', function () {
    return '受保护内容';
})->middleware('cas.auth');
```

> 回调成功后 `handleCallback()` 会返回 `resolved_user` / `context` / `logout_url` / `record_client_token_url`, 业务方拿到这些数据后,**自己决定**写 `Auth::login()` / `Sanctum` / `JWT` / 自定义 token。 包不默认执行登录态落地 — 这是核心设计边界。

🎯 核心定位
------

[](#-核心定位)

> **本包是"协议处理层",不是"业务登录态层"**。

```
┌────────────────────────────────────────────────────────┐
│  你的应用 (Laravel 业务系统)                              │
│  - 自己的用户表 / 自己的 token 体系 / 自己的 session     │
│  - 用本包"调远端 CAS 校验 ticket → 拿用户信息"          │
│  - 自己决定把用户信息落地成什么形态 (Auth/Sanctum/JWT)   │
└──────────────────┬─────────────────────────────────────┘
                   │ 整页跳(协议要求)
┌──────────────────▼─────────────────────────────────────┐
│  CAS 服务器 (laravel-cas-server 或任意 CAS 实现)        │
│  - 统一身份认证 (登录页 + Cookie 会话)                   │
│  - 签发一次性 ticket 给客户端                            │
│  - SLO 通知所有客户端清理本地会话                        │
└────────────────────────────────────────────────────────┘

```

**关键认知**:

- 本包**不**替换你的用户表 — 用户数据还在你那
- 本包**不**接管你的登录态 — 你继续用 Auth / Sanctum / JWT
- 本包**只**做"协议处理":拼 URL、调 serviceValidate、解析响应、派发事件
- 业务方拿到 `resolved_user` 后自己决定写 session / token — 5 行代码的事

📚 使用文档
------

[](#-使用文档)

章节内容[01 · 快速安装](./docs/01-quickstart.md)环境要求、安装步骤、.env 速查、验证安装[02 · 配置解读](./docs/02-configuration.md)全部配置项详解,含协议 / 适配器 / 绑定说明[03 · SSO 单点登录](./docs/03-sso-guide.md)主流程、4 种适配器、协议增强参数、单次覆盖[04 · SLO 单点登出](./docs/04-slo-guide.md)登出动作、SLO 回调、record-client-token 登记[05 · 自定义与扩展](./docs/05-customization.md)替换 UserResolver / ResponseBuilder / AuthStateChecker[06 · 事件体系](./docs/06-events.md)6 个事件详解 + Listener 实战[07 · CAS 协议参考](./docs/07-protocol-reference.md)端点 URL、请求/响应结构、协议字段[08 · 错误码 / 动作码](./docs/08-error-codes.md)15 个统一错误码 + 7 个动作码[09 · 故障排查](./docs/09-troubleshooting.md)Q&amp;A、诊断步骤、已知限制[10 · SPA 应用接入指南](./docs/10-spa-integration.md)Vue/React SPA 接入方案,后端路由 + 前端代码 + SLO 实时性📦 包结构
-----

[](#-包结构)

```
laravel-cas-client/
├── config/cas-client.php       # 全部配置项
├── src/
│   ├── CasClientServiceProvider.php   # Laravel 服务提供者(入口)
│   ├── Facades/CasClient.php          # Facade 静态入口
│   ├── Commands/InstallCommand.php    # artisan cas-client:install
│   ├── Http/Middleware/CasAuthenticate.php   # cas.auth 中间件
│   ├── Services/
│   │   ├── CasManager.php              # 主编排器
│   │   ├── CasTicketValidator.php      # Ticket 校验
│   │   ├── CasUrlGenerator.php         # URL 生成
│   │   ├── CasProtocolResponseParser.php   # JSON/XML 解析
│   │   ├── CasUserResolver.php         # 本地用户解析
│   │   ├── AuthStateManager.php        # 认证状态路由器
│   │   ├── GuardAuthStateChecker.php   # Guard 适配器(默认)
│   │   ├── RequestHeaderAuthStateChecker.php   # Header 适配器
│   │   ├── RequestAttributeAuthStateChecker.php # Attribute 适配器
│   │   ├── CasSessionRecorder.php      # 客户端会话登记
│   │   ├── CasSloService.php           # SLO 服务
│   │   └── CasStateRepository.php      # 状态仓库
│   ├── Contracts/                # 3 个可替换契约
│   ├── Enums/                    # ErrorCode / ActionCode / ResponseMode
│   ├── Events/                   # 6 个事件
│   ├── Exceptions/               # 4 个异常
│   ├── Parsers/                  # 协议响应解析
│   ├── Responses/                # 默认 ResponseBuilder
│   └── Support/CasUser.php       # 远端用户 DTO
├── stubs/http-integration.stub.php   # artisan install 拷贝的接入示例
├── examples/demo.env.example    # 完整 .env 模板
├── tests/                       # PHPUnit 测试
├── docs/                        # 本文档
└── docs/architecture.html       # 架构可视化页面

```

🤝 与 laravel-cas-server 配套
-------------------------

[](#-与-laravel-cas-server-配套)

你需要用这个包部署 SSO 用户中心[`lyn-huang/laravel-cas-server`](https://github.com/LynHuang/laravel-cas-server)接入已有 Laravel 应用**`lyn-huang/laravel-cas-client`** ← 你在这📄 License
---------

[](#-license)

[MIT](LICENSE)

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

0d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/27997579?v=4)[LynHuang](/maintainers/LynHuang)[@LynHuang](https://github.com/LynHuang)

---

Top Contributors

[![LynHuang](https://avatars.githubusercontent.com/u/27997579?v=4)](https://github.com/LynHuang "LynHuang (6 commits)")

---

Tags

clientlaravelSSOcas

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/lyn-huang-laravel-cas-client/health.svg)

```
[![Health](https://phpackages.com/badges/lyn-huang-laravel-cas-client/health.svg)](https://phpackages.com/packages/lyn-huang-laravel-cas-client)
```

###  Alternatives

[statamic/cms

The Statamic CMS Core Package

4.9k3.8M1.2k](/packages/statamic-cms)[backpack/crud

Quickly build admin interfaces using Laravel, Bootstrap and JavaScript.

3.4k3.8M228](/packages/backpack-crud)[unopim/unopim

UnoPim Laravel PIM

10.8k2.5k](/packages/unopim-unopim)[bagisto/bagisto

Bagisto Laravel E-Commerce

28.0k175.2k9](/packages/bagisto-bagisto)[leantime/leantime

Open source project management system for non-project managers. Simple like Trello, powerful like Jira. Built with neurodiversity in mind.

11.3k4.0k](/packages/leantime-leantime)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

353.6k](/packages/eslazarev-wildberries-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
