SAML 校验链
SAML 单点登录里,身份提供方签发断言交给服务提供方,服务提供方凭断言内容决定放行谁。断言是明文 XML,靠数字签名保证来源可信、靠受众与时效字段保证不能被挪用。检查的重点就是这条校验链是否完整:签名有没有强制校验、受众是否绑定到本系统、时间窗口是否检查、断言是否只能使用一次。
基本信息
| 核查对象 | 断言签名、受众限制、时效校验、重放防护 |
|---|---|
| 签名要求 | 强制验签,明确允许的签名算法 |
| 证书管理 | 证书轮换与过期安排,避免长期使用同一对密钥 |
| 传输与配置 | 服务提供方与身份提供方元数据保持一致 |
| 边界 | 只做配置核查与受控验证,不改动身份提供方 |
典型使用场景
- 上线前核查:确认断言校验项在投产后仍然开启
- 多方接入评估:不同业务接入同一身份平台时核对受众配置
- 证书轮换演练:确认轮换后旧断言不再被接受
- 自查复核:验证开发声称的校验逻辑是否真的生效
- 故障排查:登录失败时区分是校验策略严格,还是配置错位
核查清单
核查清单
断言是否强制验签,允许哪些签名算法
受众字段是否绑定到本系统标识,防止断言被挪用到其他系统
时间窗口字段是否校验,时钟偏差容忍范围是多少
断言标识是否做一次性消费,防止重放
注销流程是否通知身份提供方,会话是否真正失效断言要素与校验点
| 要素 | 作用 | 缺失后果 |
|---|---|---|
| 签名与证书 | 证明断言由可信方签发 | 断言可被伪造 |
| 受众字段 | 限定断言的使用对象 | 断言可被挪到其他系统使用 |
| 时间窗口 | 限定断言有效时段 | 长期有效断言被重复利用 |
| 断言标识 | 支持一次性消费 | 相同断言可重复提交 |
| 会话与注销 | 控制登录后的状态 | 注销后会话仍然可用 |
SAML 配置问题常与身份提供方约定不一致:核查时与身份平台管理员一起看两端配置,比单独看服务提供方更快定位问题。
放宽校验换取兼容性是有代价的:关闭签名校验或扩大时间窗口能解决登录报错,但会同时抹掉断言的可信性基础。