如何保护 API 中的用户创建等基本方法

How to secure basic methods like user creation in an API

我正在学习如何使用 rails 开发 APIs,但我找不到如何保护基本方法(如用户创建)。假设我有一个 rails 后端 API 和一个前端移动应用程序。我希望该应用能够进行 API 次调用以创建新用户。当然,不是每个人都应该能够创建新用户,所以它应该有某种身份验证。我可以使用基本或摘要身份验证(这并不重要,因为我肯定会使用 SSL),但是我必须将凭据硬编码到我的应用程序中。如果凭据以某种方式被发现,我将不得不更改它们,但这意味着应用程序的所有实例都不再经过身份验证,并且它们无法再创建用户。

我想要的东西:

  1. 只有我的应用才能使用用户创建调用。
  2. 更改凭据应该很容易,或者凭据应该会随着时间的推移自动更改。如果涉及日期和时间等,那就更难破解了。
  3. 随着时间的推移掌握了一些凭据,应该不可能(或很难)击败它背后的系统。

是否可以让我的应用程序随机生成 public 和私钥对并使用它们?保护这些调用的标准方法是什么?

提前致谢,

鲁根海德布赫尔

我可以分享我自己的经验:

  • https 与 API 的协议通信。 这是你关于 private/public 键的最后一句话,所有都内置在 https 中。
  • Doorkeeper (we combine it with Devise) gem 用于 Oauth(在我的例子中是 github 帐户)作为身份验证,而您可以使用成对的 user/passwords。
  • CanCanCan gem as authorization(用户创建限制是关于授权而不是认证)

这三个工具的集合应该为您的 API 提供基本的安全级别。我相信 cancancan 可能正在讨论中,而 devise 主要是行业标准。