1. SAML 的基本概念
SAML(Security Assertion Markup Language) 是一种基于 XML 的开放标准,用于在不同域之间传递身份认证和授权信息。它主要用于 单点登录(SSO) 场景,让用户在多个系统间无需重复登录。
-
全称:Security Assertion Markup Language
-
类型:标准协议(基于 XML)
-
主要用途:跨域单点登录(SSO)
-
核心思想:将身份认证交给一个 身份提供者(IdP, Identity Provider),再由服务提供者(SP, Service Provider)接受 IdP 的认证结果。
2. SAML 的核心概念
-
身份提供者(IdP)
-
负责验证用户身份。
-
典型产品:Okta、Azure AD、Keycloak、PingFederate 等。
-
-
服务提供者(SP)
-
提供具体服务(如 SaaS 应用)。
-
信任 IdP 的认证结果。
-
-
断言(Assertion)
-
IdP 向 SP 发送的 XML 数据,包含用户身份信息和认证信息。
-
常见类型:
-
Authentication Assertion:用户已认证
-
Attribute Assertion:包含用户属性,如邮箱、角色
-
Authorization Decision Assertion:授权信息
-
-
-
协议流程
-
用户访问 SP
-
SP 将用户重定向到 IdP
-
IdP 验证用户身份
-
IdP 返回 SAML 断言给 SP
-
SP 根据断言授权用户访问
-
3. SAML 工作流程示意

-
用户访问 SP(比如 Salesforce)
-
SP 检测用户未登录 → 重定向用户到 IdP(比如 Okta)
-
用户在 IdP 登录
-
IdP 生成 SAML 响应(XML),通过浏览器 POST 回 SP
-
SP 验证 SAML 响应的签名和有效性
-
用户获得访问权限,无需再次输入密码
4. SAML 的优势
-
安全性高:使用 XML 签名和加密,防止篡改
-
统一身份管理:用户登录统一管理,无需重复注册
-
跨域单点登录:适合企业内部与 SaaS 服务集成
-
标准开放:兼容不同厂商实现
5. SAML 与其他认证方式对比
| 特性 | SAML | OAuth2 / OIDC | JWT |
|---|---|---|---|
| 主要用途 | SSO(身份认证) | API 授权 / SSO | 轻量认证 / token |
| 数据格式 | XML | JSON | JSON |
| 适用场景 | 企业应用、跨域 | 移动端、Web API | SPA、微服务 |
| 实现难度 | 中等偏高 | 中 | 低 |
| 安全机制 | XML 签名、加密 | HTTPS、签名 | HTTPS、签名 |
总结:SAML 更偏向 企业级 SSO,OAuth2/OIDC 更偏向 Web/API 授权与现代应用。
660

被折叠的 条评论
为什么被折叠?



