Ruby on rails Rails API——我需要存储Oauth2访问令牌吗?

Ruby on rails Rails API——我需要存储Oauth2访问令牌吗?,ruby-on-rails,ruby,ruby-on-rails-3,oauth,oauth-2.0,Ruby On Rails,Ruby,Ruby On Rails 3,Oauth,Oauth 2.0,我正在为我的Rails应用程序发布一个API,并使用Oauth2保护它。我已经设置了Doorkeeper来处理Oauth2提供程序,它工作得很好。我可以根据教程为单个会话验证和设置客户端。我想发布一个Gem,让人们通过API访问他们的帐户,但我只希望他们对应用程序进行一次身份验证。因此,我有几个问题: 我是否需要存储访问令牌来完成此操作?大多数API要求您存储密钥和机密,但不需要存储令牌 如果我确实需要存储它,我如何从存储的值实例化一个新的令牌 如果我需要存储它,从安全角度看,是否有问题,是否有

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

  • 我是否需要存储访问令牌来完成此操作?大多数API要求您存储密钥和机密,但不需要存储令牌
  • 如果我确实需要存储它,我如何从存储的值实例化一个新的令牌
  • 如果我需要存储它,从安全角度看,是否有问题,是否有一个未过期的令牌?如果是,我应该启用刷新令牌吗

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

    我希望我没有弄错你的问题。如果不是这样,请告诉我。这就来了。OAuth2拥有资源所有者客户端。在您的例子中,API的用户是客户机。通常,他们向资源所有者提供服务,这涉及到访问他们在系统上的资源。每个客户机都应该获得其独有的客户机密钥和密码。他们通过doorkeeper添加到您的应用程序中的/oauth/applications用户界面获得它。他们需要提供此令牌,而不是您的库。无论如何,它无法做到这一点,因为每个客户端的密钥和机密都是唯一的。你可以通过阅读来更好地理解流程


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

    您理解正确。客户端=资源所有者。我更关心的是安全。我的理解是,简单的基于令牌的身份验证并不是那么安全,人们似乎对Oauth信誓旦旦。在其他需要较少安全性的应用程序中,我使用Deviate的token auth获得了巨大成功。