在OAuth 2.0规范的Section 4.1.2,有以下一组句子:它发出来减轻泄漏的风险后为什么OAuth 2.0规范阻止重新使用授权码?
授权代码必须不久到期 。 A 10分钟的最大授权码寿命是 推荐。客户端不得多次使用授权码 。如果一次使用授权码超过 ,授权服务器必须拒绝该请求,并且应该撤销(如果可能的话)以前根据 授权该授权码的所有令牌。
我的问题是为什么只能使用授权码一次?这似乎迫使授权服务器的实施者使用ACID数据库,该数据库引入了可伸缩性问题。放松这个约束条件将允许完全放弃存储。
我可以看到,允许重新使用授权码将意味着如果恶意代理可以获得未到期代码,他们可以获得对受保护资源的访问权限。但OAuth 2.0要求TLS处理一些交易,并为所有交易推荐它,这样可以降低代码盗窃的风险,并且假设有一个代理可以监听信道,这个要求引入了拒绝服务的可能性(代理可以简单地提交他们发现的任何授权码)。根据具体情况,DoS可能比违反保密要求更大或更小。
鉴于一些弱的编程标准,有可能验证码可能很容易从写得不好的代码中获得。在这种情况下,只能使用代码一次就会增加保护。 – RealityDysfunction 2014-10-17 13:14:02
@RealityDysfunction为true。这仍然意味着编写不佳的代码会将自身扩展到DoS,但似乎有理由认为可用性通常比保密性重要。 – 2014-10-17 13:40:46