2012-07-10 69 views
1

我为我的Rails应用程序发布了一个API,并使用Oauth2保护它。我已经设置了Doorkeeper来处理Oauth2提供程序,并且它工作得很好。我可以按照教程here对一个会话进行身份验证和设置客户端。我想发布一个Gem让人们通过API访问他们的账户,但我只希望他们必须验证一次应用程序。所以,我有几个问题:Rails API - 我需要存储我的Oauth2访问令牌吗?

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

一般来说,API是否有更好/更标准的方法?用户将能够创建可发送的订单(即涉及金钱),所以安全性在这里是一个相当重要的问题。

回答

2

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

由于您的系统中没有单独的资源所有者和客户端,因此您可能并不真的需要OAuth2。在这种情况下,您不必使用OAuth2。您可以使用简单的令牌认证(我认为设计有这样的选项,更多详细信息请参阅this question)。您也可以决定在OAuth2中使用客户端凭据流,但在我看来,这似乎是一种矫枉过正。

+0

您已经正确理解了。客户=资源所有者。我更关心的是安全问题。我的理解是简单的基于令牌的身份验证并不是那么安全,并且人们似乎发誓Oauth。在其他需要较低安全性的应用程序中,我使用Devise的令牌认证取得了巨大成功。 – ideaoforder 2012-07-10 17:55:09

相关问题