11

我们已经使用OAuth2保护了我们的 REST 服务器,并为我们控制的几个客户端应用程序实现了客户端凭据授予类型。现在我们面临的决定是要么让令牌长期存在(即它们“永不”过期),要么让客户端经常重新验证(取决于刷新令牌的过期时间)。第一个意味着捕获的令牌可能被恶意方使用,第二个意味着经常暴露客户端秘密,然后又可以用来获取令牌。

在资源服务器到客户端服务器身份验证中哪个更安全?如果我们怀疑被盗,令牌和客户端密码都可以失效。显然,所有通信都是通过https完成的..

目前我们认为客户端密钥比令牌更强大,因此对于这种两条腿的场景来说,长期存在的令牌应该更好。(对于我们将很快实现的任何三足授权类型,我们更喜欢短期令牌充当用户会话)。

谢谢你的想法!

4

1 回答 1

12

根据规范客户端凭据流仅允许用于不存在客户端机密被盗风险的客户端:

客户端凭证授权类型必须仅由机密客户端使用。

因此,如果您将此流程与不受信任平台上的应用程序结合使用,您绝对应该重新考虑这个决定。

在您的平台可信的前提下,无需担心客户端机密被盗。然后,您的决定会权衡攻击者可以使用被盗访问令牌的时间与重新认证的额外开销(只有一次调用,但仍然有一点延迟)。当两个参与者都受信任并且您使用良好的传输层安全性来抵御 MITM 攻击时,重新身份验证步骤本身与暴露您的客户端机密无关。

另请注意,不建议(也没有必要)将刷新令牌客户端凭据流一起使用:

不应包含刷新令牌。

于 2013-01-15T18:13:10.367 回答