2012-11-24 146 views
0

我正在製作一個私有API,客戶端(應用程序)調用API提供程序並檢索或發送信息。我需要一種方法來授權或識別哪個應用正在執行操作,並且如果它有權訪問它,同一個應用會在用戶簽入的不同位置使用,並且可以使API調用從該位置獲取信息,而不是從另一個位置獲取信息,但我不確定是否允許通過使用API​​密鑰或OAuth等驗證方法來實現此目的。API身份/授權

+0

更多的信息是真的需要回答這個問題... – PearsonArtPhoto

+0

更多信息喜歡什麼? – jtomasrl

回答

1

一般而言,您無法100%確定您的客戶端是接收數據的客戶端。黑客總能找到一種方法來欺騙你的程序。

儘管如此,還是有幾種方法可以做點什麼。最好的辦法是讓每個客戶端擁有自己的密鑰,然後以某種方式傳遞給服務器進行身份驗證。而且這些密鑰必須以某種方式安全地傳遞給服務器。這不太可能發生。該密鑰將唯一標識每個客戶端。如果任何客戶濫用權限,他們可能會被拒絕。

下一步是如上所述創建密鑰,使用公鑰對其進行加密並將它們發送到服務器。如果你願意,你甚至可以進行審批。

客戶端查詢服務器,產生一個數字的另一種解決方案。然後用戶將該號碼輸入他們先前登錄的網站。該號碼需要適當複雜,並且只有幾分鐘纔有效,以減少有人接管設備的風險。這適用於單向應用程序,如Netflix。

總而言之,這取決於您的程序需求。

+0

我將使用https + something。我在考慮每個客戶端的密鑰並使用基於散列的消息認證,如HMAC。我需要使用OAuth嗎? – jtomasrl

+0

OAuth實際上是一種不同的融合方式,它旨在告訴一臺服務器另一臺服務器可以從中提取數據。我會爲每個客戶端創建一個密鑰,並且從那裏開始,基於哈希的消息傳遞身份驗證可能會很好。 – PearsonArtPhoto