跳到主要内容

5. 安全考虑事项

5. 安全考虑事项 (Security Considerations)

如果授权服务器不支持访问 token 撤销 (access token revocation), 则当对应的 refresh token 被撤销时, access token 不会立即失效. 部署方在进行安全风险分析时必须考虑这一点.

使用撤销机制清理 token 有助于提升整体安全性和隐私性, 因为它降低了废弃 token 被滥用的可能性. 总体而言, 本规范并不打算提供针对 token 窃取和滥用的对策. 关于相关威胁和对策的讨论, 请参阅 OAuth 核心规范 [RFC6749] 第 10 节给出的安全考虑事项, 以及 OAuth 威胁模型文档 [RFC6819].

恶意客户端可能尝试利用新的端点对授权服务器发起拒绝服务攻击. 也应部署在 token endpoint 上的适当对策, MUST 同样应用于 revocation endpoint (见 [RFC6819] 第 4.4.1.11 节). 具体而言, 无效的 token type hint 可能误导授权服务器并导致额外的数据库查找. 实现时 MUST 谨慎处理, 防止恶意客户端利用此特性发起拒绝服务攻击.

恶意客户端可能针对潜在的 token 字符串发起撤销请求, 试图在此端点猜测有效 token. 根据本规范, 对于 public client, 客户端请求必须包含有效的 client_id; 对于 confidential client, 客户端请求必须包含有效的客户端凭据. 被撤销的 token 还必须属于发出请求的客户端. 如果攻击者能够成功猜中 public client 的 client_id 及其某个 token, 或者猜中 private client 的凭据及其某个 token, 与撤销该 token 相比, 攻击者在其他地方使用该 token 会造成严重得多的损害. 如果攻击者选择撤销该 token, 合法客户端将失去其授权授予 (authorization grant), 并需要再次提示用户. 不会造成进一步损害, 且被猜中的 token 现在已无价值.

由于 revocation endpoint 会处理安全凭据, 客户端只能从可信来源获取其位置. 否则, 攻击者可能利用伪造的 revocation endpoint 捕获有效的安全 token. 此外, 为了检测伪造的 revocation endpoint, 客户端 MUST 对 revocation endpoint 进行认证 (证书验证等).