将 iPhone 应用程序连接到安全的 RESTful API?

问题描述 投票:0回答:2

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

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

另外,OAuth 如何适应这一切?

python ios apache ssl
2个回答
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 客户端,并且还具有三足身份验证过程的示例代码。


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.