无尘阁日记

无尘阁日记

yii2单点登录插件
2026-03-03

下面按“你到底要接哪种 SSO 协议”来给你选 Yii2 的单点登录插件/方案(以及什么时候别纠结插件,直接上统一身份平台)。

1)最推荐:OAuth2 / OpenID Connect(现代主流 SSO)

适用场景

  • 你要对接:企业微信/钉钉/飞书/Google/Microsoft/自建 Keycloak 等

  • 你希望:网页登录、手机端登录、API 登录都统一

Yii2 侧首选组件

  • 官方扩展:yiisoft/yii2-authclient(支持 OpenID、OAuth、OAuth2、OpenID Connect Consumer) (GitHub)

    • 这是 Yii2 生态里最“正统、最稳”的登录对接方式

    • 典型用法:外部 IdP(身份提供方)登录成功 → 回调到你 Yii2 → 你在本地建立/绑定用户

重要提醒:如果你现在用的是 Yii3/yiisoft 体系,也有对应的 auth-client 包(要求 PHP 8.1+)。(packagist.org)

2)传统校园/政企常见:CAS(集中认证)

适用场景

  • 学校/医院/政务系统经常会给你一个 CAS 地址,让你“接 CAS 单点登录”

Yii2 可用扩展

  • daxslab/yii2-cas-client(Yii 扩展市场里明确写了:基于 phpCAS 做 CAS 认证)(Yii Framework)

  • alcad/yii2-cas / alcad/Yii2-CAS(也是 phpCAS 的封装;作者 README 提醒还在早期开发阶段)(packagist.org)

  • Yii 扩展列表里也能看到 alcad/yii2-cas 的条目。(Yii Framework)

3)企业级对接:SAML 2.0(很多大厂/SSO网关会给 SAML)

现实情况

Yii2 生态里 SAML“开箱即用、广泛维护”的专用扩展不如 OIDC/CAS 常见
通常做法是:用成熟的 PHP SAML 库(比如 OneLogin 的 toolkit 之类)自行封装到 Yii2 里,或者更推荐——用 Keycloak/MaxKey 这种身份平台把 SAML 转成 OIDC,Yii2 只接 OIDC(省大量坑)。

(你如果确认对方“只给 SAML”,我建议你优先走“身份平台转协议”这条路线。)

4)别只盯“插件”:真正的 SSO 关键在“身份平台”

如果你要的是“多个系统之间统一登录/统一退出/统一权限”,插件只是客户端,核心是 IdP/SSO Server:

  • KeycloakMaxKey 这类 IAM/SSO 平台能同时支持 OIDC、SAML、CAS、JWT 等标准协议。(https://cnb.cool)

  • Yii2 作为业务系统,用 yii2-authclient 去接 OIDC,通常是最省心的组合。(GitHub)

5)你应该怎么选(快速决策)

A. 你能决定协议(自建或可选)

  • 直接选 OpenID Connect

  • Yii2 用 yiisoft/yii2-authclient (GitHub)

B. 对方给你 CAS

C. 对方只给 SAML

  • 优先:上 Keycloak/MaxKey 做中间层,把 SAML 变 OIDC,再让 Yii2 接 OIDC (https://cnb.cool)

  • 次选:直接 PHP SAML 库 + Yii2 自封装(开发/排错成本更高)