【问题标题】:Advantages of using OAuth Password Credentials Grant over Token Access Authentication使用 OAuth 密码凭证授予优于令牌访问身份验证的优势
【发布时间】:2017-08-30 21:39:21
【问题描述】:

我正在使用 Rails 5 为移动应用程序创建 API。目前,我不需要三足授权,因为 API 只会被我们自己的移动应用程序使用。

我正在考虑选择以下两个选项之一:

  1. Doorkeeper + Devise:我可以使用 Doorkeeper 实现 OAuth 2.0,但至少目前我只会使用 Password Credentials Grant。
  2. Rails 自己的 ActionController::HttpAuthentication::Token 模块 + 设计:这似乎是更简单的方法。

老实说,我看不出Token Access Authentication 方法和OAuth 2.0's Password Credentials Grant 之间的区别。

如何选择一个而不是另一个?还有其他需要考虑的选择吗?

【问题讨论】:

    标签: ruby-on-rails authentication oauth oauth-2.0 rails-api


    【解决方案1】:

    如果您所拥有的只是“单一用途 API”(仅适用于移动应用程序),那么在安全性方面没有太大区别。

    但是,如果您想扩展此 API 以供外部服务使用,那么使用 Doorkeeper 实施 OAuth 2.0,您将处于更好的位置,因为您可以轻松配置,例如,授权为他们授予代码。 所以,我想说“Doorkeeper + Devise”选项更具前瞻性,因为它提供了更多选项,而HTTP Token authentication 实现起来要简单得多。

    【讨论】:

    • 我也是这么想的。您是否碰巧有任何来源解释 HTTP 令牌身份验证和 OAuth 2.0 密码凭据授予之间没有有用的区别?
    • 其实,这是一个常识:你可以把HTTP Token以同样的方式想象成Username:Password的组合......在这两种情况下,客户端都必须在请求之间持久化它们并在每个请求上发送它们。因为它们不会过期,所以您永远不会知道是否有人偷了它并一路使用它。另一方面,这可以通过授权代码授予轻松检测到,这被认为比以前的任何一个都更安全。也许你在这里发现了一些有趣的东西:softwareengineering.stackexchange.com/a/297997/238916
    • 我明白,但我根本不是在谈论授权授予,我只是在谈论密码凭据授予与令牌访问身份验证。
    【解决方案2】:

    两者在概念上是不同的东西:

    • “令牌访问身份验证”指定了一个协议,该协议描述了(可能是长期存在的)令牌应如何安全地呈现给服务器。它没有说明令牌的来源或应如何解释。
    • “Password Credentials Grant”是成熟 OAuth 流程的一部分,描述了获取(通常是短期)令牌的方法

    从某种意义上说,您可以使用 Password Credentials Grant 来使用 OAuth 获取令牌,然后在 Token 授权标头中使用此令牌来获得访问权限。

    然后问题就变成了 - 当我们可以使用存储在应用程序中的(永久和秘密)令牌来授权时,进行额外的往返以将(永久和秘密)凭据交换为(临时)令牌是否有用反正马上。

    在我看来,使用完整的 OAuth 流程有两个潜在的好处。首先,它可以让您自然地为第三方添加其他授权方式。其次,它允许您随时撤销令牌并使用这些其他方式(当然,如果您实施它们)强制重新授权,而无需发明任何轮子。

    另一方面,您可以随时在以后需要时添加任何额外的“令牌生成”部分。因此,如果您当前的计划是在代码中硬编码凭据,我怀疑您最好还是依靠Token 授权。

    它不仅缩短了一个请求,而且还可能比 OAuth 中使用的Bearer 身份验证更安全:如果攻击者嗅探Bearer 令牌,他们(通常)将获得对服务器的完整令牌访问权限直到到期。 Token 令牌不是这种情况(通常)。如果攻击者无论如何都可以从您的应用程序中提取共享密钥,这当然不是很重要。

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 2017-07-05
      • 2020-03-23
      • 2016-10-06
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      相关资源
      最近更新 更多