详解身份认证三大主流技术:SAML、OAuth 2.0 与 OIDC

在现代应用开发与架构设计中,身份认证(Authentication)与授权(Authorization)是绕不开的核心话题。然而,SAML、OAuth 2.0 和 OIDC(OpenID Connect)这三个术语经常被混淆。它们是现代身份管理的“三大支柱”,但它们解决的问题、适用的场景以及背后的逻辑却大相径庭。

本文将通过通俗易懂的比喻、详细的技术拆解以及场景对比,带你彻底搞懂这三大主流技术。


1. 核心比喻:进入高级办公园区

为了直观地理解这三者的区别,我们可以想象一个场景:你要进入一个管理严格的办公园区,并使用里面的服务。

SAML:你的“员工工牌”

  • 场景:你(用户)在门口(身份提供商 - IdP)验证身份,获得一张加密的、包含你部门职位的工牌(SAML断言)。
  • 过程:你拿着这个工牌去园区内的健身房(服务提供商 - SP),保安直接验证工牌的真伪和你的权限,就让你进去了。
  • 核心证明“你是谁”以及“你属于这里”。它是官方的、正式的身份证明。

OAuth 2.0:一张“特定区域的临时门禁卡”

  • 场景:你想让一个外卖小哥(第三方应用)进入园区,把外卖送到你办公室。
  • 过程:你不会给他你的主工牌(用户名密码),而是去前台(授权服务器)申请一张只能进入大堂和到你楼层的临时卡(Access Token)。
  • 核心“授权”而非“认证”。外卖小哥用这张卡只能完成送餐任务,无法进入其他机密区域。系统不关心外卖小哥是谁,只关心他手里那张卡有什么权限。

OIDC:用“员工工牌”换取“会员折扣”

  • 场景:园区里的咖啡厅(第三方应用)对本公司员工提供折扣,它需要确认你是员工。
  • 过程:你向咖啡厅出示工牌,咖啡厅(依赖方 - RP)联系园区前台(身份提供商 - IdP)验证工牌。前台验证后告诉咖啡厅:“是的,他是我们的合法员工,他的名字叫张三”(ID Token)。
  • 核心在 OAuth 2.0 的授权基础上,明确地告诉你“用户是谁”。它不仅允许咖啡厅代表你办事(如果有的话),还附带了你的身份信息。

2. 技术详解与拆解

(1) SAML(安全断言标记语言)—— 企业级的老兵

SAML(Security Assertion Markup Language)是一个基于 XML 的开放标准,主要用于在身份提供商(IdP)服务提供商(SP) 之间交换认证和授权数据。它非常成熟,被誉为“企业级单点登录(SSO)的基石”。

🔧 技术核心

  • 协议基础:基于 XML,消息结构严谨但相对冗长。
  • 传输方式:通常通过用户的浏览器重定向(HTTP POST Binding) 来传递 SAML 消息。最著名的就是 SAMLResponse 这个 POST 参数。
  • 核心组件
    1. 断言 (Assertion):IdP 发给 SP 的“信”,包含认证状态、用户属性(如邮箱、部门)以及授权决策。
    2. 元数据 (Metadata):IdP 和 SP 之间通过交换 XML 元数据文件来建立信任(包含证书、端点URL等)。这使得集成过程标准化,但也增加了前期配置的复杂度。
  • 安全性:依赖 XML 数字签名XML 加密 来保证消息的完整性和机密性。

🎯 适用场景

  • 企业内部单点登录:员工使用一个账号密码,登录所有集成了 SAML 的内部系统(如 CRM、HR 系统、Confluence)。
  • B2B 应用集成:一家公司的员工安全地访问另一家公司提供的云服务(如 Salesforce),无需在对方系统里单独创建账号。
  • 高安全要求场景:金融、政府等领域偏爱其成熟度和基于元数据的强信任模型。

(2) OAuth 2.0 —— 授权的框架

OAuth 2.0 是一个授权框架,它解决的核心问题是:如何让第三方应用在不知道用户密码的情况下,安全地访问用户在另一个服务上的资源?

🔧 技术核心

  • 协议基础:HTTP 协议,通常使用 JSON。
  • 核心组件
    1. Access Token:访问令牌,通常是一个不透明的字符串或 JWT,代表了用户的授权(Scope)。
    2. Refresh Token:刷新令牌,用于在 Access Token 过期后获取新的令牌,无需用户再次登录。
    3. Scopes:权限范围,定义了令牌能做什么(例如 read_userwrite_order)。
  • 关键区别:OAuth 2.0 本身不负责认证用户。它只负责颁发令牌,允许应用访问资源。虽然你可以用它来“伪造”认证(比如验证 Access Token 是否有效),但这在安全上是不严谨的。

🎯 适用场景

  • 第三方应用授权:例如“允许这个修图 App 访问我的 Google Photos”。
  • API 保护:保护微服务或公开 API,确保只有持有有效令牌的客户端才能调用。

(3) OIDC (OpenID Connect) —— 现代身份认证标准

OIDC 是建立在 OAuth 2.0 授权框架之上的一个身份层。简单来说:OIDC = OAuth 2.0 + 身份认证。它填补了 OAuth 2.0 在“认证”方面的缺失。

🔧 技术核心

  • 协议基础:建立在 OAuth 2.0 之上,使用 JSON 格式,轻量且易于解析。
  • 核心组件
    1. ID Token:这是 OIDC 的灵魂。它是一个 JWT (JSON Web Token),由 IdP 签名,包含了关于用户认证事件的声明(如用户ID sub、签发者 iss、过期时间 exp 等)。应用解析这个 Token 就能知道“用户是谁”。
    2. UserInfo Endpoint:一个标准的 API 端点,应用可以使用 Access Token 访问它来获取用户的更多详细信息(如姓名、头像)。
    3. 发现机制:通过 .well-known/openid-configuration 端点,应用可以自动获取 IdP 的配置,大大简化集成。

🎯 适用场景

  • 社交登录:网站上的“使用微信登录”、“使用 Google 登录”。
  • 现代单页应用 (SPA) 和移动 App:OIDC 的流程(如 PKCE)非常适合前端应用,且 JSON/JWT 格式对开发者非常友好。
  • 统一认证中心:构建一个能够同时服务于 Web、App 和 API 的统一身份认证平台。

3. 深度对比与选择指南

为了更清晰地做出技术选型,我们将这三者放在一起对比:

特性 SAML OAuth 2.0 OIDC
核心目的 认证 (Authentication) 授权 (Authorization) 认证 (基于 OAuth 2.0)
解决的问题 “用户是谁?能进系统吗?” “应用能访问我的数据吗?” “用户是谁?应用能代表他吗?”
协议年代与风格 2000年代,XML,重量级 2010年代,JSON,框架 2014年,JSON/JWT,轻量级
核心令牌 SAML Assertion (XML) Access Token ID Token (JWT) + Access Token
传输方式 浏览器重定向 / POST RESTful API RESTful API
移动端支持 较差 (依赖浏览器交互) 优秀 优秀
典型场景 企业内网 SSO,B2B 集成 API 授权,第三方集成 社交登录,现代 App 认证

如何选择?

请参考下面的决策流程图:


image.png
flowchart TD
    A[身份管理需求] --> B{主要目的是什么?}
    
    B --> C[“<b>用户登录 / 身份验证</b>”]
    B --> D[“<b>第三方应用授权 / API保护</b>”]
    
    C --> E{“应用环境是?”}
    E --> F[“<b>传统企业环境</b><br>内部系统SSO、对接ADFS/老旧系统”]
    E --> G[“<b>现代互联网环境</b><br>Web SPA、移动App、SaaS应用”]
    
    F --> H[“<b>首选 SAML</b><br>成熟稳定,企业级标准”]
    
    G --> I[“<b>首选 OIDC</b><br>轻量灵活,开发者友好,移动端支持好”]
    
    D --> J{“需要知道用户身份吗?”}
    J --> K[“<b>是</b><br>例如:社交登录并获取资料”] --> I
    J --> L[“<b>否</b><br>例如:纯后台API调用”] --> M[“<b>使用 OAuth 2.0</b><br>纯粹的授权框架”]

总结

  • SAML 是企业级环境的王者,如果你在做企业内部系统对接,或者客户要求对接他们的 Active Directory,SAML 是不二之选。
  • OAuth 2.0 是现代 API 经济的基石,如果你在开发 API 平台或者需要让第三方应用访问你的数据,必须使用它。
  • OIDC 是面向未来的身份标准,它完美结合了 OAuth 2.0 的灵活性和标准化的身份认证层。如果你正在从头构建一个面向用户的现代应用(Web 或 App),OIDC 是你的最佳选择。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容