这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
SSO 的安全边界
IdP 是高价值目标
SSO 让身份体验统一,但也带来一个残酷事实:认证中心(IdP)一旦被攻破,等于所有系统的钥匙都被拿走。
所以 SSO 的安全设计,核心是划清信任边界:业务系统凭什么信任 IdP 传来的身份?
信任边界的四道防线
1. 业务系统必须验证 IdP 的身份断言
业务系统不能「看到跳转回来就信」。必须:
- 验证断言 / Token 的签名(确认来自真正的 IdP)。
- 验证 IdP 的签发者和受众(是发给我的吗)。
- 回调地址、来源都要校验,防止伪造回调。
2. 授权码 / 票据短期有效、一次性使用
- code 或 SAML 断言必须短期有效(分钟级)。
- 一次性使用,用过即失效,防止重放。
3. 回跳地址白名单
- 业务系统的
redirect_uri必须白名单校验。 - 否则攻击者可以构造一个恶意回调,诱导用户跳转到钓鱼地址(开放重定向)。
4. 最小化身份信息
- 不同业务系统只拿自己需要的用户信息。
- 不要一个系统拿到全部敏感字段。需要「最小权限」原则延伸到 SSO。
高价值目标的加固
因为 IdP 太重要,除了功能安全,还要:
- 独立部署:IdP 与普通业务系统隔离,降低连带风险。
- 最小权限:IdP 服务账号只授予必要权限。
- 单独监控:登录、签发、登出的异常都要重点盯。
- 密钥管理:签名密钥定期轮换,泄露时能快速切换。
一句话总结
SSO 把「每个系统自己管密码」变成「所有系统都信任一个中心」。信任集中带来便利,也带来单点风险。划清信任边界、保护好 IdP,是 SSO 的全部意义。
下一章,把视角转向第三方:OAuth 如何安全地接入外部身份。
发现内容有问题?
告诉我们哪里需要改进。
