《身份认证漏洞排查实战指南》
第2章 认证架构分析
2、认证架构分析:单点登录(SSO)架构、多因素认证(MFA)架构、联邦身份认证架构、无密码认证架构
在现代企业级身份认证体系中,架构设计直接决定了系统的安全性、用户体验与运维成本。本节将深入剖析四种主流认证架构的核心原理、组件交互与安全风险排查要点。
2.1 单点登录(SSO)架构
SSO允许用户使用一组凭据登录多个应用系统,核心在于集中式认证服务与令牌(Token)的传递。常见实现包括基于Cookie的SSO、基于SAML的SSO以及基于OAuth2/OpenID Connect的SSO。
架构组件
| 组件 | 职责 | 常见产品/协议 |
|---|---|---|
| 身份提供者 (IdP) | 验证用户身份,颁发令牌 | Keycloak, Okta, ADFS |
| 服务提供者 (SP) | 受保护的应用,信任IdP颁发的令牌 | Web应用, API网关 |
| 令牌 (Token) | 携带用户身份与属性信息 | SAML Assertion, JWT |
| 会话存储 | 维护用户登录状态 | Redis, 分布式缓存 |
SSO认证流程(SAML 2.0)
- 用户访问SP受保护资源,未携带有效会话。
- SP生成SAML认证请求,重定向用户至IdP。
- IdP验证用户凭据(如密码+MFA),生成SAML断言。
- IdP通过HTTP POST将断言发送回SP的Assertion Consumer Service (ACS)。
- SP验证断言签名与时效,建立本地会话,返回资源。
SSO架构内联SVG图
安全排查要点
- 令牌劫持:检查Token是否在URL中传递(应使用POST绑定),是否启用HTTPS与HttpOnly Cookie。
- 会话固定:验证IdP在认证成功后是否重新生成会话ID。
- 签名验证:确保SP严格验证SAML断言或JWT的签名,防止伪造令牌。
2.2 多因素认证(MFA)架构
MFA通过组合两种或以上不同类型的认证因素(知识、持有、固有)来增强安全性。常见架构包括基于TOTP的软令牌、基于短信/邮件的OTP、以及基于FIDO2的硬件密钥。
MFA认证流程(TOTP模式)
- 用户输入用户名/密码完成第一因素认证。
- 服务器检测到需要第二因素,要求用户提供TOTP码。
- 用户打开Authenticator App(如Google Authenticator),获取基于时间的一次性密码。
- 用户输入TOTP码,服务器使用共享密钥与当前时间窗口验证。
- 验证通过,颁发会话令牌。
MFA架构内联SVG图
安全排查要点
- 旁路攻击:检查是否允许跳过MFA(如特定IP、内部网络),应强制所有敏感操作启用MFA。
- OTP重放:验证TOTP窗口大小(通常为±1个时间步),防止重放攻击。
- 恢复码管理:恢复码应安全存储(如哈希),且仅一次性使用。
2.3 联邦身份认证架构
联邦身份认证允许跨安全域的身份共享,用户在一个身份提供者(IdP)处认证后,可访问多个联盟内的服务提供者(SP)。核心协议包括SAML 2.0、WS-Federation和OpenID Connect。
联邦认证流程(跨域SAML)
- 用户访问SP1(域A),SP1检测到用户未认证,生成SAML AuthnRequest。
- SP1将用户重定向至域A的IdP(IdP-A)。
- IdP-A验证用户身份,生成包含用户属性的SAML断言。
- IdP-A将断言通过用户浏览器POST回SP1的ACS URL。
- SP1验证断言,建立本地会话。
- 当用户访问SP2(域B)时,SP2将用户重定向至IdP-B,IdP-B与IdP-A建立信任关系(通过元数据交换),完成跨域认证。
联邦身份认证架构内联SVG图
安全排查要点
- 元数据篡改:检查IdP与SP之间的元数据交换是否使用签名,防止中间人注入恶意端点。
- 断言劫持:确保SAML断言包含
Audience与Recipient限制,防止跨服务重放。 - 会话超时:联邦会话应设置合理的超时时间,避免长期有效导致泄露风险。
2.4 无密码认证架构
无密码认证旨在消除静态密码带来的泄露、弱口令与钓鱼风险。主流方案包括基于公钥密码学的FIDO2/WebAuthn、基于魔法链接(Magic Link)的邮箱认证、以及基于生物识别的设备内认证。
无密码认证流程(WebAuthn)
- 用户注册时,服务器生成一个随机挑战(Challenge),发送给客户端。
- 客户端调用WebAuthn API,用户通过生物识别或PIN确认身份,生成新的公私钥对。
- 客户端将公钥与签名后的挑战返回服务器,服务器存储公钥。
- 用户登录时,服务器发送新挑战,客户端使用私钥签名挑战。
- 服务器使用存储的公钥验证签名,认证通过。
无密码认证架构内联SVG图
安全排查要点
- 私钥存储:检查私钥是否安全存储在设备安全区域(如TPM、Secure Enclave),防止导出。
- 挑战随机性:服务器生成的挑战必须具有足够熵值且一次性使用,防止重放攻击。
- 注册绑定:验证公钥是否与用户账户强绑定,防止注册阶段替换公钥。
四种架构对比总结
| 架构 | 核心优势 | 主要风险 | 适用场景 |
|---|---|---|---|
| SSO | 提升用户体验,减少密码疲劳 | 单点失效,令牌劫持 | 企业内部多应用集成 |
| MFA | 显著提高账户安全性 | 用户摩擦,OTP钓鱼 | 高安全敏感系统 |
| 联邦身份 | 跨域身份共享,降低管理成本 | 信任链复杂,元数据安全 | 合作伙伴、多云环境 |
| 无密码 | 消除密码泄露风险,抗钓鱼 | 设备丢失,兼容性要求高 | 现代浏览器、移动端应用 |
在实际渗透测试中,应针对不同架构的薄弱环节设计测试用例,例如SSO的令牌伪造、MFA的旁路绕过、联邦身份的断言篡改、无密码的注册劫持等。下一节将深入实战漏洞挖掘技术。