我正在创建我的第一个 API 并使用 Ruby on Rails。 API 将严格是服务器到服务器。我做了很多 reading关于保护此类 API 的方法,并决定使用 https 可能是最简单的方法,而不是 Oauth。
附加信息:
- API 非常简单且只读
- 我提供的数据并不便宜,我需要向我们的数据提供商和合作伙伴证明 API 是安全的,他们的数据将受到保护免遭盗窃。这是我需要保护它的唯一原因。
我最初的计划是简单地使用将通过 https 发送的私钥。我不需要担心客户端共享此 key ,因为它们是根据使用情况计费的。
我的问题是如何在客户端服务器上强制使用 https?除了要求 API 路由使用 https 协议(protocol)外,我还需要做其他事情吗?
最佳答案
HTTPS 只做两件事: * 让您感觉您正在与正确的服务器通信 * 使用加密来防止窃听和篡改。
这不会限制对您的 API 的访问。对敏感数据使用 HTTPS 是必须的,所以使用它。您可以将前端服务器(例如 nginx)设置为仅使用 SSL(例如,不要配置端口 80/HTTP)。在这里阅读更多:http://ariejan.net/2011/10/22/automatically-switch-between-ssl-and-non-ssl-with-nginx-unicorn-rails
然后您将希望客户端对自己进行身份验证,以便您可以检查他们是否是从您那里接收数据的正确方。您可以在此处使用 OAuth,但据我所知,只有一个客户端,这可能有点矫枉过正。
您可以使用的最简单的身份验证形式是需要身份验证 token 。每个请求都必须包含此 api token ,您可以在服务器端验证它。您还可以使用它来记录有关使用情况的指标。
因此,基本上,每个请求都需要一个 API key 并配置您的服务器,以便您的 API 仅通过 HTTPS 公开。
关于ruby-on-rails - 使用 https 保护 Rails API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162392/