1

我正在为我的 Rails 应用程序发布一个 API,并使用 Oauth2 保护它。我已经设置了 Doorkeeper 来处理 Oauth2 提供程序,并且效果很好。我可以按照此处的教程对单个会话进行身份验证和设置客户端。我想发布一个 Gem 供人们通过 API 访问他们的帐户,但我只希望他们必须对应用程序进行一次身份验证。所以,我有几个问题:

  1. 我是否需要存储访问令牌才能完成此操作?大多数 API 要求您存储密钥和机密,但不需要存储令牌。
  2. 如果我确实需要存储它,如何从该存储值实例化一个新令牌?
  3. 如果我需要存储它,在安全方面,拥有一个不会过期的令牌是否有问题?如果是这样,我应该启用刷新令牌吗?

一般来说,是否有更好/更标准的 API 方法?用户将能够创建可发货的订单(即涉及到金钱),因此这里的安全性是一个非常重要的问题。

4

1 回答 1

2

我希望你的问题是正确的。如果不是这种情况,请告诉我。所以这里。OAuth2 有资源所有者客户。在您的情况下,API 的用户是 clients 。通常,他们为资源所有者提供服务,其中涉及访问他们在您系统上的资源。每个客户都应该得到一个对她来说唯一的客户密钥和秘密。他们通过门卫添加到您的应用程序的 /oauth/applications UI 获得它。他们需要提供此令牌,而不是您的图书馆。无论如何,它无法做到这一点,因为每个客户端的密钥和秘密都是唯一的。您可以阅读此处以更好地了解流程。

您可能并不真正需要 OAuth2,因为您的系统中没有单独的资源所有者和客户端的概念。在这种情况下,您不必使用 OAuth2。您可以使用简单的令牌身份验证(我认为设计有这样的选项,有关更多详细信息,请参阅此问题)。您也可以决定在 OAuth2 中使用客户端凭据流,但在我看来这有点过头了。

于 2012-07-10T17:28:56.497 回答