CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Web 与安全入门/课时/SAML 简介
RawBlame
课时目录12 节

Web 与安全入门

  1. 01Web 安全概览
  2. 02OWASP 风险
  3. 03SSL/TLS
  4. 04CORS
  5. 05CSP 内容安全策略
  6. 06服务器安全
  7. 07密码哈希
  8. 08Basic 认证
  9. 09令牌认证
  10. 10Cookie 认证
  11. 11SAML 简介
  12. 12综合练习

SAML 简介

企业 SSO;与 OIDC 对比。

25 分钟

SAML 简介

SAML 2.0(Security Assertion Markup Language) 是企业 单点登录(SSO) 的老牌标准:用户在公司 IdP(Identity Provider) 登录一次,携带 SAML Assertion 访问多个 SP(Service Provider) 应用。Java 后端常作为 SP 接入 Okta、AD FS、Keycloak SAML。现代 greenfield 多选 OpenID Connect(见 oauth-oidc),但 SAML 在 政企、高校、legacy ERP 仍广泛存在。

学习目标

  • 说清 IdP / SP、Assertion、Metadata 的角色
  • 对比 SAML 与 OIDC 在 格式、移动端、API 上的差异
  • 知道 Spring 接入 SAML 时 要校验什么

角色与流程(SP 发起)

1. 用户访问 SP → 未登录,302 到 IdP
2. IdP 登录成功 → POST SAMLResponse 到 SP ACS URL
3. SP 验签 Assertion → 建立本地会话(Cookie)或发 JWT
4. 用户访问 SP 资源

Assertion 是 XML,含 NameID(用户标识)、Attribute(部门、邮箱)、NotOnOrAfter(过期)等。

与 OIDC 对比

SAML 2.0OpenID Connect
载体XML AssertionJWT id_token + JSON
典型场景企业 Web SSO、B2B现代 Web / 移动 / API
前端 SPA重、Redirect POST 多授权码 + PKCE 友好(oauth-pkce)
API 纯后端少见直接传 SAMLBearer access_token 自然
工具链偏企业 IdP 文档oauth-essentials 全 track

新 API 优先 OIDC;客户要求「必须接 AD FS SAML」时再上 SAML。

SP 必须校验的项

  1. 签名:IdP 公钥(metadata 轮换要跟进)
  2. Audience:Assertion 发给本 SP,防转发到其他系统
  3. Recipient / ACS URL:与配置的 Assertion Consumer Service 一致
  4. NotOnOrAfter / NotBefore:拒绝过期 Assertion
  5. InResponseTo:与先前 AuthnRequest ID 对应,防重放

任一失败应 401/403 + 审计日志,不要「解析失败仍登录」。

Spring 生态

  • Spring Security SAML2 Service Provider(内置 SAML 登录流)
  • 或与 Keycloak / Okta 配 metadata 交换

本地会话仍建议:HttpOnly Cookie(sec-auth-cookie)或 内部 JWT(sb-jwt),不要把 SAML XML 长期塞给前端。

SAML 与 OAuth 的混淆

  • SAML:多是 联邦认证(证明用户是谁)
  • OAuth 2.0:多是 授权(证明客户端有权访问资源)

OIDC 在 OAuth 上加了 身份层。企业里常见组合:员工 SSO(SAML/OIDC)登录门户 → 门户拿 access token 调后端 API。

安全注意

风险缓解
XML 外部实体(XXE)禁用 DTD、用 hardened parser
Assertion 重放短有效期 + InResponseTo + 一次性 store
Metadata 篡改HTTPS 拉 metadata、pin 证书
过度 Attribute最小属性,映射本地 user id

与 sec-owasp A07、A01 相关:SSO 只解决 认证,SP 侧 授权 仍要自己做。

何时学本课、何时跳 OIDC

  • 客户合同 / IdP 文档写 SAML 2.0 → 本课 + vendor 指南
  • greenfield、移动端、第三方 API → 直接 oauth-intro

练习

  • 画 SAML Web SSO 时序:Browser、SP、IdP 三方
  • 列三条 SAML 与 JWT id_token 的结构差异
  • 阅读 oauth-oidc 的 UserInfo,对比 SAML Attribute Statement

小结

SAML = 企业 XML SSO;验签、Audience、时效缺一不可。 现代 API 优先 OIDC,SAML 用于对接 legacy IdP。下一课综合审查 Spring API 安全清单。

加载本节练习…
← 上一课Cookie 认证下一课 →综合练习