2012-02-25 61 views
4

我正在啓動一個新的Web項目,並打算使其基於API;那就是我想先構建API,通過OAuth進行身份驗證,然後構建一個網站以及使用該API處理數據的可能的移動應用程序。我也希望能夠向公衆開放API。如何驗證基於OAuth API的主應用程序

這是我的問題;我正在努力弄清楚如何驗證這些'官方'應用程序,包括主站點在內的我所做的應用程序。

在OAuth中,客戶端爲每個用戶創建一個帳戶,然後通過登錄主站點的資源所有者尋求訪問權限。這顯然不適用於我,因爲主站點和客戶端是相同的地方,這也意味着我的用戶應該創建兩個帳戶只是爲了使用我的網站...

我相信Twitter使用自己的API來運行twitter.com和我的印象是,這種方法變得非常正常,所以必須有一個標準的方法。

我必須缺少一些東西,但什麼?

回答

5

您將API(業務邏輯)與用戶身份驗證(例如登錄)以及第三方應用程序(OAuth)的授權混淆在一起。

twitter.com使用自己的API是正確的。但他們不在自己的網站上使用OAuth。當你在twitter.com上時,他們的API可以通過cookie身份驗證自行使用。簡單地說:您已登錄。

一旦您離開twitter.com,您必須使用OAuth。現在,應用程序代表用戶使用API​​。

總結。您並不特別需要OAuth來爲自己的Web客戶端使用自己的API。您需要OAuth或其他授權機制來發布您的API,並且它也可以用於您自己的「官方」應用程序。

真的沒有必要區分你自己的官方應用程序與第三方應用程序。無論如何不是從技術角度來看。

+0

好吧,這很有意義。現在看起來很明顯,但我需要它拼寫出來。乾杯 – smix96 2012-02-28 16:04:16

1

主持兩個版本的「API」。一個映射到外部域api.yoursite.com並且它啓用OAuth來驗證所有請求。其他內部版本只能在之內訪問您的服務器池和官方應用程序。由於只有您的官方應用程序可以首先訪問它,請考慮對內部API可信的所有請求。

如果你想在同一個應用程序來管理內部和外部的電話,您可以選擇

  1. 區分基於傳入IP外部和內部的請求地址
  2. 實現你的API接受的一個「VIP通行證」或OAuth令牌進行身份驗證。外部應用使用OAuth令牌代表特定用戶執行操作。官方應用程序使用「VIP通行證」代表任何用戶執行操作。
+0

乾杯,但似乎沒有理由主辦兩個單獨的版本,而是有兩種方式來驗證,如在接受的答案。 – smix96 2012-02-28 16:07:39

相關問題