Oauth2 - 客户端凭据流中长期存在的令牌与重新认证

Pet*_*ete 11 security rest 2-legged access-token oauth-2.0

我们使用OAuth2保护了我们的REST服务器,并为我们控制的多个客户端应用程序实现了客户端凭据授权类型.现在我们面临的决定是让令牌长期存在(即它们"永不"到期)或者让客户经常进行reAuthenticate(取决于刷新令牌到期).第一个意味着被捕获的令牌可以被恶意方使用,第二个意味着经常暴露客户机密,然后可以用来获取令牌.

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

目前我们认为客户端密钥比令牌更强大,因此对于这种双腿情况,长寿命令牌应该更好.(对于我们即将实施的任何三条腿授权类型,我们更喜欢用作用户会话的短期令牌).

谢谢你的想法!

Jan*_*ger 11

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

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

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

在您的平台受信任的先决条件下,无需担心被盗客户机密.然后你决定权衡攻击者使用被盗访问令牌的时间重新认证的额外开销(只有一次呼叫,但仍然是一个小延迟).当两个参与者都受到信任并且您正在使用良好的传输层安全性来抵御MITM攻击时,重新认证步骤本身不涉及您的客户端密码暴露.

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

刷新令牌不应该包括在内.