請考慮以下(常見)方案。我將首先嚐試使用OAuth指定我理解(好)Web API的樣子。如果我有任何錯誤的流量,請糾正我。Web API認證和授權(OAuth)
我的API:關注的中心,所有的客戶都使用它。
我的Web應用程序:使用API就像任何其他客戶端會。
我的移動應用程序:也使用API,與web應用程序的方式完全相同。用戶應該能夠在不打開瀏覽器的情況下進行身份驗證。
第三方Web應用程序:也使用API - 但是,用戶/資源所有者必須授予應用程序執行某些操作的權限。他們通過重定向到我的網站(或打開彈出窗口),在必要時記錄用戶並提示用戶訪問。
第三方移動應用程序:與第三方網絡應用程序的要求相同。
的問題(一個或多個)
- 如若API處理身份驗證和授權?
- API如何知道誰(使用客戶端應用程序的資源所有者)正在使用API?
- 當用戶使用我的官方客戶時,他們顯然不需要授予任何權限 - 我的客戶應該擁有所有權限。在調用API時,我如何區分我的官方客戶端和第三方客戶端?
以下是我的理解,並會做到目前爲止。這是我真正需要幫助的地方 - 正確地完成這項工作。
官方的Web應用程序
- Client attempts to `GET /api/tasks/".
- API says "who are you? (HTTP 401)
- Official web app redirects to login form.
> Bob enters his credentials.
- .. now what? Get an authentication token? Cookie?
- 由於web應用程序只是我的API的消費者,如何將我管理的登錄狀態?網絡應用程序應該這樣做嗎?
- Web應用程序是否應該直接訪問用戶數據庫,而不是根據API驗證憑據?
我主要使用.NET(C#),但我喜歡一種適用於基於Node JS的API的方法。
你會怎麼做呢?特別是客戶流量對我來說是一個問題。我問的原因是,我已經讀過,除非有絕對必要,否則你不應該推出自己的安全解決方案,所以如果有任何標準指導方針,請告訴我。 :)
您是否找到解決您的問題的方法,因爲我目前正在尋找一個最好的和最低的尋找解決方案。 – idipous
不,可悲的是.. – Jeff
oauthbible.com可能有幫助嗎? –