Rails API - 我是否需要存储我的Oauth2访问令牌?

时间:2012-07-10 17:19:45

标签: ruby-on-rails ruby ruby-on-rails-3 oauth oauth-2.0

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

  1. 我是否需要存储访问令牌才能完成此操作?大多数API要求您存储密钥和密钥,但不能存储令牌。
  2. 如果我确实需要存储它,如何从该存储值中实例化一个新令牌?
  3. 如果我需要存储它,那么在安全方面,拥有一个非过期令牌是一个问题吗?如果是,我应该启用刷新令牌吗?
  4. 一般来说,API有更好/更标准的方法吗?用户将能够创建可发运的订单(即涉及金钱),因此安全性在这里是一个非常重要的问题。

1 个答案:

答案 0 :(得分:2)

我希望我的问题是正确的。如果不是这样,请告诉我。所以这里。 OAuth2拥有资源所有者客户。在您的情况下,API的用户是客户端。通常,他们向资源所有者提供服务,包括访问系统上的资源。每个客户端都应该获得一个她独有的客户密钥和秘密。他们通过门卫添加到您的应用程序的/ oauth / applications UI获取它。他们需要提供此令牌而不是您的库。无论如何它不能这样做,因为密钥和秘密是每个客户端唯一的。您可以阅读here以便更好地了解流程。

您可能不需要OAuth2,因为您的系统中没有单独的资源所有者和客户端的概念。在这种情况下,您不必使用OAuth2。您可以使用简单的令牌身份验证(我认为设计有这样的选项,有关详细信息,请参阅this question)。您也可以决定在OAuth2中使用客户端凭据流,但在我看来,这似乎是一种过度杀伤。