2015-09-27 65 views

回答

1

您必須在每個請求上發送授權標頭。但是例如Chrome會記住這些驗證令牌並在每個請求中自動發送。

1

這是正確的,所以當用戶第一次登錄時,他的憑據會根據某些數據進行驗證,如果正確,則會生成身份驗證令牌。

身份驗證令牌是相當多的自包含的實體(其存儲與關鍵簽署了一些數據) 所有後續請求

該令牌在客戶端(通常伴隨着一個刷新令牌)獲取店,此令牌保存在授權頭(承載+令牌)

當服務器接收到該令牌時,它使用它先前用來簽署該令牌的密鑰對其解密。並使用存儲的數據

如果該認證令牌已過期,則刷新令牌將發揮作用。

一些鏈接與 On a high level, how does OAuth 2 work? 開始和jwt.io獲得令牌

+0

問題是關於基本認證。你的答案是關於基於令牌的認證。這是兩件完全不同的事情。 – MvdD

+0

似乎你是正確的,從你的答案中學到了一些東西,謝謝 –

0

使用基本身份驗證的感覺,每個請求都需要有格式的Authorization HTTP標頭:

Authorization: Basic <base64(username:password)> 

用戶名和密碼使用冒號(':')連接在一起,結果字符串爲base64 encoded

如果授權報頭是不請求的一部分,或內部的憑證無效,服務器應用HTTP 401未授權響應來響應,並且包括HTTP報頭,如:

WWW-Authenticate: Basic realm="myRealm" 

基本驗證是一個implicit authentication scheme,所以在用戶輸入有效的憑證後,瀏覽器會將它們與每個頁面請求一起發送。

對於AJAX請求,您需要從代碼中附加此標頭。但是,你真的不應使用基本身份驗證來保護API,對於一些原因:

  1. 你會強迫客戶端持有的代碼,在那裏他們可以很容易被竊取的憑證。
  2. 您必須使用基本身份驗證的HTTPS,因爲base64編碼完全不提供任何憑據保護。
  3. 用戶名/密碼組合通常比訪問令牌有效的時間長得多,從而增加了被盜時的風險。
  4. 密碼驗證應該是緩解暴力攻擊的緩慢過程,其中令牌驗證只是驗證數字簽名。
  5. 每次通過線路發送用戶名/密碼都會增加試圖破解加密的人的攻擊面。

更好的替代品,以保護網絡的API token based authentication schemesOAuth2或基於HMAC認證方案像HawkAWS

相關問題