【问题标题】:Oauth2 - long lived Tokens vs Reauthentication in a Client Credentials FlowOauth2 - 客户端凭证流中的长寿命令牌与重新身份验证
【发布时间】:2012-12-28 06:07:51
【问题描述】:

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

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

完成的

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

感谢您的想法!

【问题讨论】:

    标签: security rest oauth-2.0 access-token 2-legged


    【解决方案1】:

    根据the specification客户端凭据流只允许用于不存在客户端密码被盗风险的客户端:

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

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

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

    另请注意,将刷新令牌客户端凭据流一起使用是not recommended(也是不必要的):

    不应包含刷新令牌。

    【讨论】:

    • 感谢您的回答。我们可能会使用长期存在的令牌,添加一个持久层,以便我们可以不时地使令牌无效。但是您的回答提出了另外两个问题。为了便于阅读,我会将它们添加到我的帖子中。非常感谢您对这些的看法。
    猜你喜欢
    • 2013-07-20
    • 2015-08-11
    • 2016-08-22
    • 1970-01-01
    • 2019-01-08
    • 2013-08-19
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多