2011-05-17 26 views

回答

5

我有點掙扎着自己的相同概念。我認爲首先要做的只是HTTPS,所以它開始比不安全。

接下來,這取決於你將如何進行身份驗證。如果你需要的只是一個API密鑰,(用於跟蹤哪個實體正在訪問數據)應該沒問題。如果您還想跟蹤用戶信息,則需要某種方式將特定API密鑰基於某個連接訪問特定類型的記錄。

我正在查看我的應用程序的表單身份驗證,並使用身份驗證cookie。幸運的是IIS上的ASP.NET可以爲你做很多繁重的工作。


實例時間:(我敢肯定,我需要更多的添加到這個,但是當我在工作它給的東西咋就)

窗體身份驗證: 發送一對(或更多)在一個表單體中的字段。這是通過和通過POST。沒有任何數量的不可逆哈希可以使其安全。爲了確保安全,您必須始終在防火牆後面留下所有闖入的眼睛(是的),否則您必須通過HTTPS。夠簡單。

基本認證: 通過網絡發送base64編碼的「username:password」字符串作爲標題的一部分。請注意,base64是安全的,因爲屏蔽門是潛艇。你不希望它是不安全的。 HTTPS是必需的。

API密鑰: 這是說一個應用程序是假想XYZ。這應該是私人的。這與用戶無關。優選的是,在請求API密鑰時,公共密鑰與API授權者共享,允許在傳輸時對API密鑰進行編碼,從而確保它保持私密,但仍然證明源是他們。這可能會變得複雜,但是因爲有一個應用程序進程,並且因爲它不會從供應商更改,所以可以通過HTTP完成。這並不意味着每個用戶,這意味着每個開發公司即使用你的API

所以你想要發生的事情是,應用程序訪問你的數據,你想確保它是一個授權的應用程序,你可以使用私鑰進行協商,以便在運行時進行簽名。這可確保您正在與要與之通話的應用程序通話。但請記住,這並不意味着用戶是他們所說的人。

然而,

您可以使用API​​密鑰和關聯的公鑰/私鑰對用戶名和密碼信息進行編碼,以便使用HTTP通過電報發送它們。這與HTTPS的工作方式非常相似,但您只是對郵件的敏感部分進行了加密。

但是爲了讓用戶跟蹤他們的信息,您將不得不根據基於用戶的登錄來分配令牌。因此,讓他們登錄,使用適當的系統通過網絡發送數據,然後將表示用戶的一些唯一標識符返回給應用程序。讓應用程序在每次執行用戶特定任務時發送該信息。 (通常始終)。

你送過來的電線的方式是你告訴客戶端設置cookie,我見過的所有HttpClient的實施知道,當他們向服務器發出請求,他們發回的所有cookie服務器有史以來確定仍然有效。它只發生在你身上。因此,您在服務器上的響應中設置一個cookie,其中包含您需要與客戶端通信的任何信息。


HTH,問我更多問題,以便我們可以進一步優化。

+0

那麼形式驗證將驗證cookie傳遞給iPhone應用程序? – 2011-05-17 18:44:38

+0

當然。這全部由HTTP(S)傳輸機制處理。您當然需要在iPhone應用程序中專門捕獲它,但聽起來像其他人正在這樣做。告訴他們你是如何進行認證的,並讓他們解決問題。 – jcolebrand 2011-05-17 18:47:49

+0

這樣就可以驗證「應用程序」,如果應用程序需要驗證用戶身份,該怎麼辦?就像如果應用程序有用戶登錄和編輯配置文件的方式。 – 2011-05-17 19:08:16

2

一種選擇是使用表單身份驗證並使用身份驗證cookie。另外,請確保所有服務呼叫都是通過SSL發送的。

+0

那麼通過auth cookie回iphone應用程序? – 2011-05-17 18:42:30

+0

是的,並有iPhone應用程序保持形式的cookie。這將是最簡單的選擇,因爲您已經使用iis/asp.net而無需重新創建自己的自定義安全性。 – bkaid 2011-05-17 18:46:20