身份认证协议简介:OAuth 2.0、OIDC、SAML、LDAP

老实说,很多人在做安全架构时,第一个绕不开的坑就是“选协议”。

OAuth 2.0、OIDC、SAML、LDAP,这四个词听起来像绕口令。

但它们的定位完全不同。用错了,轻则接口调不通,重则留下安全漏洞。

我见过不少团队把OAuth当认证用,结果泄露后一脸懵。

咱们今天就把这几个协议掰开揉碎,讲清楚。

1. 协议的定位:谁该在哪个场景出现?

先来个总览。这四种协议,其实分两大阵营:

  • 授权与认证协议:OAuth 2.0、OIDC、SAML。它们解决“你是谁”和“你能干啥”。
  • 目录访问协议:LDAP。它解决“用户信息存在哪,怎么查”。

你想想看,一个典型的微服务架构里,很可能四个都用上。

LDAP管组织架构,OAuth 2.0管API授权,OIDC做人机认证,SAML做企业SSO。

不是说越新越好,也不是越复杂越安全。关键是场景对不对。

身份认证协议核心定位图 身份认证与授权协议核心定位 身份与授权协议体系 OAuth 2.0 + OIDC OAuth 2.0 (授权) OIDC (认证) 适用场景 第三方API授权 移动端/单页应用 适用场景 用户身份认证 单点登录(SSO) SAML (企业SSO) 适用场景 企业级跨域认证 基于SAML Assertion的单点登录 LDAP (目录访问协议) 适用场景:组织信息查询、认证后端、用户目录

2. OAuth 2.0:只授权,不认人

不少人觉得OAuth就是登录。这是个误解。

OAuth 2.0 是一个授权框架。它解决的是“A应用能不能访问B应用里的资源”。

举个例子:你点“用微信登录”某个网站。那个网站拿到的是一个Access 。

这个只能访问你允许的那部分数据。比如昵称和头像。它不代表“你是张三”。

OAuth 2.0 授权模式速览
模式适用场景安全级别
授权码模式Web后端应用最高(推荐)
隐式模式纯前端SPA较低(已不推荐)
密码模式受信任第一方应用中等
客户端凭证模式服务间通信中等

我的实践心得:

我一直坚持一个原则:能用授权码模式就别用别的。很多安全问题都出在“图省事”。

3. OIDC:OAuth 2.0 的认证层

OIDC 全称 OpenID Connect。它是在 OAuth 2.0 之上加了一层“身份认证”。

说白了,OIDC让你不仅能搞到Access ,还能拿到一个ID 。

ID 是JWT格式。里面包含了用户ID、签发者、有效期。

一个小技巧:

用OIDC做SSO时,记得验证ID 的签名和issuer。很多攻击靠的就是伪造签发方。

4. SAML:企业级的“老大哥”

SAML比OAuth出生早。它是XML格式的。

企业环境里,SAML依然很常见。尤其是做跨域单点登录时。

我记得有一个项目,客户要求必须用SAML 2.0。因为他们的HR系统只支持这个。

SAML的核心流程是:

  1. 用户访问服务提供者(SP)
  2. SP重定向到身份提供者(IdP)
  3. 用户在IdP登录
  4. IdP生成SAML Assertion,返回给SP
  5. SP验证Assertion,放行

我曾经踩过的一个坑:

配置SAML时,签名和加密的证书最好分开用。我见过有人一套证书用了五年,泄露了都不知道。

5. LDAP:目录服务的老兵

LDAP不是用来做互联网登录的。它是用来查“组织里的人在哪”。

很多公司用LDAP管理员工信息。比如部门、邮箱、手机号。

它像一个树形结构的电话本。你通过DN(Distinguished Name)找到一个人。

为什么还要提LDAP?

因为很多企业会把LDAP和OAuth结合。LDAP负责存“谁是张三”,OAuth负责给“张三的App授权”。两者不冲突。

6. 协议对比:一张表讲清

四种协议核心差异
协议核心目标数据格式主要场景
OAuth 2.0授权委托JSON/Bearer 第三方API访问
OIDC身份认证+授权JWT (ID )用户登录、SSO
SAML单点登录(企业级)XML Assertion跨企业系统认证
LDAP目录信息查询LDIF / 二进制组织架构管理

你可能会问:那我该怎么选?

我的建议很简单:

  • 如果你是互联网应用,对外提供API → OAuth 2.0 + OIDC
  • 如果你是大企业,要和供应商系统对接 → SAML
  • 如果你要管理内部用户信息 → LDAP

一个小提醒:

别把LDAP当成认证协议。它主要做“读”操作。虽然也能做绑定认证,但不适合高并发场景。

7. 实战:当协议需要联动时

最后聊一个实际案例。

我之前参与过一个金融项目。系统里:

  • 用LDAP存员工和客户信息
  • 用OAuth 2.0 + OIDC做内部系统登录(SSO)
  • 用SAML对接监管机构的外部系统

你看,四个协议全用上了。不是冲突,是互补。

关键在于:LDAP提供身份数据源,OIDC负责认证流程,SAML处理跨域断言。

每个协议把自己那部分做好就行。别试图用一个协议包打天下。