测验:SSO 对接实战
以下哪项正确区分了 OIDC 中 state 和 nonce 的作用?
- state 防止令牌重用,nonce 防止回调伪造
- 两者都用于防止回调伪造,只发送一个即可
- state 是服务器会话标识符,nonce 是签名使用的随机种子
- state 检查回调是否对应自己的请求,nonce 检查 ID 令牌中是否包含相同值
为什么 OIDC 不直接通过浏览器 URL 返回令牌,而要先经过一次授权码?
- 授权码比令牌短,可以避开 URL 长度限制
- 避免令牌残留在浏览器历史、Referer 和服务器日志中,并通过服务器间通信获取真实令牌
- 降低 IdP 负载
- 支持移动应用
JWT 验证代码为什么不能直接信任令牌头部 alg 字段的值?
- alg 字符串没有长度限制,超长值可能使解析器停止
- alg 是可选项,缺失时各实现的默认值不同
- alg 不在签名范围内,因此即使读取也不能信任
- 攻击者可以把 alg 改为 none 或替换算法,使验证失效
为什么 XML Signature Wrapping(XSW)攻击很危险?
- 它让签名验证失败,造成服务瘫痪
- 它耗尽 XML 解析器内存
- 它伪造证书
- 签名验证虽然通过,但应用实际读取的节点却是未签名的伪造节点
为什么 SAML 签名证书到期尤其危险?
- 服务会变慢
- 旧会话仍然有效,安全风险增大
- 所有用户的登录会同时失败,形成全面故障
- 证书无法重新签发
不设置时钟偏差容许值(60~120 秒)时,典型症状是什么?
- 只有请求被路由到特定服务器时,登录才会间歇性失败
- 所有登录始终失败
- 能够登录但没有权限
- 令牌永不过期
旧系统只支持 SAML,而新系统希望使用 OIDC 时,应如何利用 IdP?
- 按协议分别部署 IdP,只共享用户目录
- 必须先把旧系统改为 OIDC,在此之前无法接入 SSO
- 在同一个 IdP 中同时登记 SAML 和 OIDC 客户端,让它们从同一会话分别取得所需信息
- 两种协议的会话模型不同,无法由同一 IdP 同时支持