2014-11-05 52 views
0

我們有一個Web服務,它目前使用基於https的基本身份驗證來驗證用戶請求。我們還有一個使用該服務的網站,以及一個也使用Web服務的本地Windows客戶端。我已經閱讀了關於OAuth的內容,它似乎總是用於授予或獲取對外部資源(即委託)的訪問權限,但我試圖瞭解它是否取代了基本身份驗證。使用OAuth而不是基本身份驗證?

我不太確定所有部件如何配合在一起。你是否使用基於https的網站來檢索一個祕密,然後讓使用OAuth而不是基本的REST服務向Web服務請求身份驗證的JavaScript?

似乎在某些時候用戶需要輸入他們的用戶名和密碼到表單中。我不確定接下來會發生什麼。這甚至是OAuth的用例嗎?

回答

0

如果您擁有用戶(資源所有者)的本地數據庫帳戶,則可以使用名爲「資源所有者密碼憑證」流程的OAuth流替換基本身份驗證流。 這是你發出HTTP POST在通常命名爲/token的內容類型爲這個HTTP POST操作是x-www-form-urlencoded你的HTTP服務器指定的終點很簡單的流程,所以後身體會包含這樣的事情grant_type=password&username=Taiseer&password=SuperPass

一請求被髮送到/token端點,服務器將根據數據庫存儲驗證用戶憑證,如果全部有效,則它應該生成一個包含此資源所有者(用戶)的所有聲明的令牌(簽名字符串)。然後,您的客戶端應用程序應該在授權標題中顯示此令牌,並使用bearer方案對任何受保護的終結點進行每次調用。 該令牌在一段時間後過期,您可以從AuthZ服務器進行配置。您可以閱讀我的詳細博客文章Token Based Authentication以獲取更多詳細信息。

+0

您描述的不是OAuth,它是您自己的基於令牌的安全方法。我曾考慮過類似的計劃,但想要使用標準。 – bpeikes 2014-11-06 04:45:23

+0

此外,您的文章呼籲通過http基於表單的身份驗證,這將是一個巨大的安全漏洞。 – bpeikes 2014-11-06 04:46:18

+0

Nop我不同意你,這是一個OAuth流的單一流程,這不是表單身份驗證,我已經提到這應該通過生產中的https完成。看起來你讀得不好。閱讀更多關於此流程的信息:[link](https://tools.ietf.org/html/rfc6749#section-1.3.3)。 – 2014-11-06 05:38:42