我正在创建我的第一个API并使用Ruby on Rails。 API将严格地是服务器到服务器。我已经在保护像这样的API的方法上做了很多reading,并且已经决定使用https可能是最简单的方法,而不是Oauth。
其他信息:
我的初步计划是简单地使用将通过https发送的私钥。我不需要担心客户端共享此密钥,因为它们是根据使用情况收费的。
我的问题是你如何在客户端服务器上强制使用https?除了要求API路由使用https协议之外,还有其他我需要做的事吗?
答案 0 :(得分:8)
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,但是因为我聚集在那里只会有一个客户端,这可能是过度的。
您可以使用的最简单的身份验证形式是需要身份验证令牌。每个请求必须包含此api令牌,您可以在服务器端验证。您还可以使用它记录有关使用情况的指标。
因此,基本上,需要为每个请求和配置服务器的API密钥,以便您的API仅通过HTTPS公开。