2011-12-01 16 views
1

我使用Pylons框架在Python中構建了一個RESTful API,爲Apache2和mod_wsgi提供服務,並且希望將它連接到iPhone應用程序。我對HTTPS,SSL和證書頒發機構的經驗很少,我想知道如何去保護我的API。將iPhone應用連接到安全的RESTful API?

如何確保通過HTTPS提供API?像在this示例中那樣,是否有必要設置SSL證書?如果我通過未被iOS認可的權限(例如CACert.org,主要是因爲它是免費的)簽署SSL證書,是否會影響我的應用與我的服務器通信的能力?其他人如何解決保護基於Web的RESTful API和iPhone應用程序之間通信的問題?

此外,OAuth如何適應這一切?

回答

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客戶端,並且還具有三腳認證過程的示例代碼。

+0

要使OAuth工作,您根本不需要SSL? – john

+0

不,您本身不需要SSL。這確實取決於保護你的API的意思。正如我所提到的,OAuth可以幫助防止未經授權的客戶訪問您的API。但是,如果沒有SSL,客戶端和服務器之間的通信仍然是未加密的。也許您正在尋找的是OAuth/SSL組合? – stephenmuss

1

您可以在iOS中以編程方式處理證書。只要您的代碼承認指紋,您甚至可以使用自簽名證書。我記不清頭頂上的細節,但我知道你可以使用didReceiveAuthenticationChallenge來做到這一點。

從長遠來看,購買證書比較簡單(cacert.org不會這麼做)。