OAuth服务器(包括Open ID Connect提供商)必须检查客户端请求?error=...
(如果已指定),以确保在过去5中未使用相同的客户端请求{{1}}分钟。
所有这一切都有道理,但我的问题很简单,服务器在{{1}}中返回的内容如果已经发现nonce已经被使用过了?
我已经在网上,RFC和一些SDK代码中进行了十几次搜索,但我无法找到错误返回的位置以及代码的位置。
答案 0 :(得分:1)
nonce用于防止提供商生成的令牌对客户端的重放攻击。客户端将nonce发送给Provider,以便Provider可以将其包含在令牌中。这意味着客户需要跟踪它产生的nonce,而不是Provider。事实上,OpenID Connect规范甚至在http://openid.net/specs/openid-connect-core-1_0.html#IDToken中说:
[除了在令牌中包含它]授权服务器应该 对使用的随机数值不执行其他处理
因此,此处不需要任何错误代码,因为提供程序不会使用nonce“执行”任何操作,除非将其包含在令牌中。