2013-07-27 79 views
0

我有REST API並使其更安全我想限制只能訪問已註冊的應用程序或網站。如何使REST API被註冊的應用程序使用

現在,這些客戶端應用程序可以在Web應用程序或移動應用的Android/Windows的/黑莓/蘋果等

我也不能要求客戶端應用程序修改有代碼來存儲任何由我提供剩下的API來註冊。 (因爲這些應用程序可能會或可能不會使用數據庫或其他持久性媒體)。

WCF REST API不應該注意到調用者是否註冊了它。

任何建議如何做到這一點。

+0

您使用哪個框架來實現您當前的REST API? –

+0

我正在使用WCF Web API –

+0

您可能會發現這很有用然後:http://stackoverflow.com/questions/16830243/asp-net-combining-forms-authentication-and-basic-authentication –

回答

1

使用HTTP基本身份驗證(只要您的REST服務在HTTPS下運行)是一種非常標準的方法。然後,您爲每個要訪問API的已註冊應用程序生成一個登錄名/密碼。

[編輯:更多的細節在這裏:http://en.wikipedia.org/wiki/Basic_access_authentication

基本上當一個客戶端連接,他們需要Base64編碼,他們的用戶名/密碼,並將其連接到標準的HTTP Authorization頭。您的服務器應用程序將讀取標題,解碼並提取用戶名/密碼,並使用您的授權應用程序列表對其進行檢查。

注 - 頭只有base64編碼,所以用戶名/密碼實際上是純文本。你真的應該運行HTTPS,如果你想使用這種身份驗證方法,否則頭是開放的攔截]

+0

即使其餘服務正在運行在HTTPS下,但我們的移動應用程序需要將它傳遞到標題中,並且要做到這一點,用戶名/密碼需要存儲在軟件包中....這可以反編譯並受到安全威脅..... –

+0

如果您正在分發需要訪問該服務的應用程序,無論您使用何種身份驗證/授權機制,它仍然可以被黑客入侵。話雖如此,許多Web應用程序需要兩個級別的身份驗證 - 一個是應用程序密鑰,一個是每個用戶的唯一用戶名。您可以將它們組合成單個傳遞密鑰,或者通過REST調用傳遞用戶名/密碼/應用程序組合並返回隨後調用所需的唯一憑單。 –

相關問題