tags, create time
tags
create time
2026-07-13 10:03
SSO 协议对比与选型指南
概述
本文横向对比 CAS、SAML 2.0、OAuth 2.0、OIDC 四种主流 SSO 协议,帮助你在实际项目中做出合理的选型决策。
横向对比总览
维度
CAS
SAML 2.0
OAuth 2.0
OIDC
诞生年份
2000
2005
2012
2014
数据格式
自定义 XML
XML
JSON
JSON (JWT)
传输层
HTTP 重定向
HTTP 重定向 + POST
HTTPS API
HTTPS API
核心目的
认证 (SSO)
认证 (SSO)
授权
认证 + 授权
Token 类型
Ticket (ST/TGT)
Assertion
access_token
id_token + access_token
移动端支持
差
差
好
优秀
SPA 支持
差
差
好 (PKCE)
优秀 (PKCE)
实现复杂度
低
高
中
中
生态丰富度
一般
丰富 (企业级)
极丰富
极丰富
主要用户
高企内部系统
企业 B2B SaaS
第三方登录
现代 Web/移动应用
各协议适用场景
选择 CAS 的场景
企业内部多个传统 Web 系统需要统一登录
已有 Apereo CAS Server 基础设施
团队对 OAuth/JWT 不熟悉,需要快速落地
不涉及移动端或第三方接入
选择 SAML 2.0 的场景
与企业客户的 IdP(AD FS、Okta)对接
已有 AD/LDAP 用户体系,需要对外暴露 SSO
B2B SaaS 产品,客户要求 SAML 集成
合规要求(如 FedRAMP、SOC 2)强制使用 SAML
选择 OAuth 2.0 的场景
第三方应用需要有限度地访问你的 API
「用微信/GitHub 登录」这类需求
纯 API 服务的访问控制(客户端凭证模式)
服务间的 M2M 认证
选择 OIDC 的场景
新项目的首选 ——现代、通用、生态好
SPA / 移动端 / 微服务架构
需要标准化的用户信息接口
需要和主流 IdP( Keycloak、Auth0、Azure AD)对接
技术栈对比
数据格式
格式
优点
缺点
XML (SAML)
严谨、标准完善
冗长、解析慢、安全风险多
JSON (OAuth/OIDC)
轻量、开发者友好
规范相对灵活,需自行约束
JWT (OIDC ID Token)
自包含、可离线验证
无法即时撤销、Payload 可见
签名与加密
协议
签名方式
加密支持
CAS
可选 (HMAC)
不支持
SAML
XML Digital Signature( RSA/EC)
XML Encryption( RSA/AES)
OAuth 2.0
无标准(靠 HTTPS)
无标准
OIDC
JWT Signature( RS256/ES256)
JWE(可选)
[!info] 为什么 OIDC 通常只签名不加密?
JWT 的 Payload 通常是用户 ID、邮箱等非敏感信息。签名保证完整性(不被篡改),HTTPS 保证传输安全。如果需要隐藏 Payload,使用 JWE 加密。
选型决策树
[!tip] 默认选 OIDC
如果你没有强烈的理由选择其他协议,OIDC 是最安全的默认选择 。它覆盖了 SSO + 授权的完整场景,生态支持最好,学习资源最丰富。
接入成本评估
维度
CAS
SAML
OAuth 2.0
OIDC
Go 库成熟度
一般
一般
优秀
优秀
调试难度
低
高(XML 解析坑多)
中
中
文档质量
一般
规范详尽但晦涩
优秀
优秀
测试工具
少
SAML Tracer 等
OAuth Proxy
OIDC Debugger
预计接入工时
1-3 天
3-7 天
1-3 天
1-3 天
推荐开源 IdP
产品
支持协议
特点
适用规模
Keycloak
OIDC, SAML
功能全面,Red Hat 维护
中大型
Auth0
OIDC, SAML
SaaS 托管,上手快
中小型
Casdoor
OIDC, SAML, CAS
Go 实现,中文社区
中小型
Apereo CAS
CAS, OIDC, SAML
高校/企业经典选择
中大型
Authentik
OIDC, SAML
Python,现代化 UI
中小型
Logto
OIDC
开源 Auth0 替代
中小型
[!tip] Keycloak 是自建 SSO 的首选
如果要自建 SSO 平台,Keycloak 是当前综合评分最高的开源方案。支持 OIDC + SAML,管理界面完善,社区活跃。唯一的缺点是基于 Java,内存占用较大。
关联笔记