lyn-huang / laravel-cas-server
基于laravel实现的cas单点登录服务端
v1.0.0
2026-08-28 08:49 UTC
Requires
- php: ^7.4 || ^8.0
- guzzlehttp/guzzle: ^6.5 || ^7.0 || ^8.0
- laravel/framework: ^8.0 || ^9.0 || ^10.0 || ^11.0
Requires (Dev)
- orchestra/testbench: ^6.0 || ^7.0 || ^8.0 || ^9.0
- phpunit/phpunit: ^9.6 || ^10.5 || ^11.0
This package is auto-updated.
Last update: 2026-08-28 09:03:01 UTC
README
一个功能完整的 Laravel CAS (Central Authentication Service) 服务器扩展包,实现 SSO 单点登录 与 SLO 单点登出,支持 CAS 1.0 / 2.0 / 3.0 协议。
✨ 功能特性
- 🔐 SSO 单点登录 — 一次登录,多个应用共享会话
- 🔄 SLO 单点登出 — 一处登出,处处登出(自动通知所有客户端)
- 🎫 完整票据体系 — TGT / ST / PGT / PT,一次性防重放
- 📦 协议支持 — CAS 1.0 / 2.0 / 3.0,JSON + XML 双响应格式
- 🎨 高度可定制 — 自定义用户模型、登录逻辑、Blade 模板、属性释放
- 🛡️ 安全内置 — service 白名单、SSRF 防御、登录锁定、SLO 死信
📋 环境要求
| 依赖 | 版本 |
|---|---|
| PHP | ^7.4 || ^8.0 |
| Laravel | ^8.0 || ^9.0 || ^10.0 || ^11.0 |
| 数据库 | MySQL 5.7+ / MariaDB / SQLite / PostgreSQL |
⚡ 快速安装
# 1. 安装 composer require lyn-huang/laravel-cas-server # 2. 发布配置与视图 php artisan vendor:publish --provider="LynHuang\LaravelCasServer\CasServerServiceProvider" # 3. 建表 php artisan migrate # 4. 创建客户端应用 php artisan cas:create-client
MySQL 5.7 + utf8mb4 用户,请先在
AppServiceProvider::boot()加Schema::defaultStringLength(191);
安装完成后访问 /cas/health 验证是否正常。
🚀 快速开始
- 在
cas_clients表注册你的应用(client_redirect= 登录回调地址) - 应用检测未登录 → 跳转
GET /cas/login?service={回调地址} - 用户登录 → CAS 带
ticket重定向回回调地址 - 应用调用
GET /cas/serviceValidate?service=&ticket=验证并获取用户
详细流程见下方文档。
⚠️ 注意:本包基于 CAS 协议,其登录方式不支持前后端分离(SPA / Vue / React / 移动端 / 小程序) —— 登录必须整页跳转到 CAS 服务器页面,且凭据只提交给 CAS 服务器,无法由前端 AJAX 代为登录。 这是 CAS 协议的设计限制,本包不计划修改。请先阅读 08 · 前后端分离架构说明 确认是否符合你的场景。
📚 使用文档
| 章节 | 内容 |
|---|---|
| 01 · 快速安装 | 环境要求、安装步骤、建表、创建客户端 |
| 02 · 配置解读 | 全部配置项说明 + .env 速查 |
| 03 · SSO 单点登录使用 | SSO 流程、客户端接入、票据一次性、多应用同域 |
| 04 · SLO 单点登出 | SLO 流程、登出回调实现、强制登出 |
| 05 · CAS 协议端点参考 | 全部端点 URL 与参数 |
| 06 · 自定义 | 模板 / 交互接口 / 用户模型 / 属性释放 / 事件 |
| 07 · 注意事项与故障排查 | 安全、部署、常见问题(Q&A) |
| 08 · 前后端分离架构说明 | ⚠️ 重要限制:CAS 不支持前后端分离登录 |
| 09 · 客户端接入指南 | 接入方视角:从准备到落地,含各语言要点与自检清单 |
📦 包结构
laravel-cas-server/
├── config/ # 配置文件
├── database/migrations/ # 数据表迁移
├── resources/views/ # Blade 模板
├── routes/ # 路由定义
├── src/ # 核心 PHP 代码
└── docs/ # 使用文档