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

时间:2011-12-01 21:20:11

标签: iphone python apache api ssl

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

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

此外,OAuth如何适应所有这些?

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

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