我正在为我的Rails应用发布一个API,并使用Oauth2保护它。我已经设置了Doorkeeper来处理Oauth2提供程序,它运行良好。我可以按照教程here对单个会话进行身份验证和设置客户端。我想发布一个Gem供人们通过API访问他们的帐户,但我只希望他们必须对应用程序进行一次身份验证。所以,我有几个问题:
一般来说,API有更好/更标准的方法吗?用户将能够创建可发运的订单(即涉及金钱),因此安全性在这里是一个非常重要的问题。
答案 0 :(得分:2)
我希望我的问题是正确的。如果不是这样,请告诉我。所以这里。 OAuth2拥有资源所有者和客户。在您的情况下,API的用户是客户端。通常,他们向资源所有者提供服务,包括访问系统上的资源。每个客户端都应该获得一个她独有的客户密钥和秘密。他们通过门卫添加到您的应用程序的/ oauth / applications UI获取它。他们需要提供此令牌而不是您的库。无论如何它不能这样做,因为密钥和秘密是每个客户端唯一的。您可以阅读here以便更好地了解流程。
您可能不需要OAuth2,因为您的系统中没有单独的资源所有者和客户端的概念。在这种情况下,您不必使用OAuth2。您可以使用简单的令牌身份验证(我认为设计有这样的选项,有关详细信息,请参阅this question)。您也可以决定在OAuth2中使用客户端凭据流,但在我看来,这似乎是一种过度杀伤。