2014-03-28 83 views
1

我正在設計一個REST API,其中某些區域可用於公共消費,而另一些則可用於私人用途(大多數是管理員)。REST API公共/安全架構

例如,公共API將允許顯示產品列表,而不要求最終用戶對自己進行身份驗證。因此,它是向API驗證自身的Web應用程序(或電話應用程序)。

管理員應該可以登錄,獲取OAuth令牌,然後執行某些方法。

我已經使用Web API2.0/C#設計了api,但是原理保持不變。我目前正在使用ASP.NET身份,併爲身份驗證的用戶提供訪問令牌和刷新令牌,以便他們可以執行此類非公開呼叫。如果他們沒有令牌,他們將無法訪問該API。

我該如何在公共API級別執行此操作?顯然,我想要認證的不是最終用戶,而是真正的應用程序本身,即使這些調用是公開的,所以一些隨機的John Doe不能公開GET請求。

我知道我們有客戶端ID和應用程序密鑰。人們通常如何認證公共電話?我擔心每次打電話都會一遍又一遍地傳遞客戶端ID和祕密,這種做法違背了目的。

任何指針,將不勝感激。

回答

4

請閱讀這篇文章,瞭解REST風格的Web API,它符合最佳實踐:

http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#requirements

希望它有助於

但我從你的問題認識,你應該單獨管理的行爲和用戶操作相同的模型並僅對他提供管理員操作。 不會與用戶和管理員共享重要操作。

+0

我最終使用client_credentials授予允許Web客戶端和電話客戶端進行身份驗證並獲得令牌。謝謝! –