【问题标题】:Connecting iPhone app to a secure RESTful API?将 iPhone 应用程序连接到安全的 RESTful API?
【发布时间】:2011-12-02 06:16:51
【问题描述】:

我正在使用 Pylons 框架在 Python 中构建一个 RESTful API,使用 Apache2 和 mod_wsgi 为其提供服务,并希望将其连接到 iPhone 应用程序。我对 HTTPS、SSL 和证书颁发机构的经验很少,我想知道如何保护我的 API。

如何确保 API 是通过 HTTPS 提供的?是否有必要像this 示例那样设置 SSL 证书?如果我通过 iOS 不认可的机构(例如 CACert.org,主要是因为它是免费的)签署 SSL 证书,这会影响我的应用程序与服务器通信的能力吗?其他人如何解决保护基于 Web 的 RESTful API 和 iPhone 应用程序之间的通信的问题?

另外,OAuth 如何融入这一切?

【问题讨论】:

    标签: iphone python apache api ssl


    【解决方案1】:

    这实际上取决于您所说的“保护”您的 API 是什么意思。

    您的意思是要 A) 保护它,使未经授权的人无法访问 API,还是 B) 您的意思是要对在客户端和服务器之间来回传递的数据进行某种程度的加密?

    如果答案是 B 或两者兼而有之,那么您肯定需要考虑获取 SSL 证书并将其安装在服务器上。大多数证书颁发机构都有如何执行此操作的指南。

    我不确定您所说的“iOS 不认可的权威”是什么意思,但您仍然应该考虑从公认的权威那里拿出一份证书。如果他们提供免费证书,尝试 CACert.org 仍然没有什么坏处。在服务器和客户端之间的通信能力受到影响方面,我真的看不出有任何问题。

    为了保护您的 API 免受未经授权的客户端的攻击,您可以查看 OAuth(请参阅 http://oauth.net/)。 OAuth 有各种 Python 库。例如查看https://github.com/simplegeo/python-oauth2。您可能需要考虑的唯一一件事是在实施 OAuth 时有一个合理的学习曲线。

    上面的第二个链接演示了一个简单的 OAuth 客户端,还提供了三足身份验证过程的示例代码。

    【讨论】:

    • 不,您本身不需要 SSL。这实际上取决于您保护 API 的含义。正如我所提到的,OAuth 可以帮助防止未经授权的客户端访问您的 API。但是,如果没有 SSL,客户端和服务器之间的通信仍然是未加密的。也许您正在寻找的是 OAuth/SSL 组合?
    【解决方案2】:

    您可以在 iOS 中以编程方式处理证书。只要您的代码确认指纹,您甚至可以使用自签名证书。我不记得我脑海中的细节,但我知道你可以使用 didReceiveAuthenticationChallenge 来做到这一点。

    从长远来看,购买证书更简单(cacert.org 不会这样做)。

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多