常見的4種認證機制


  本文主要講的是常用的登陸認證機制。隨手的筆記,可以快速了解這幾種認證方式的原理。

 

1、HTTP Basic Auth

  HTTP Basic Auth ,簡單的來說就是每次請求API的時候,都提供用戶的username和password。
用這種方式可以不用登陸,隨時請求后台任何一個方法。但如何知道用戶是否擁有權限的?可以在每次請求任何一個方法時候,都攜帶用戶名和密碼,然后后台每次都對用戶名和密碼進行校驗,並且對角色進行校驗,之后再選擇是否放行。這就意味着每次都要做校驗。
  缺點:容易泄密。只適用於內部使用。

 

2、Cookie Auth(也叫Session認證)

  

 

 

  登陸請求,當服務端校驗通過之后,服務端會創建一個獨立的Session來保存用戶信息,以作為登陸成功的標記。每一個用戶創建一個Session對象。服務端存儲完session數據之后,那瀏覽器是如何知道該用戶登陸過?
  首先服務端會將Session對象的id放入Cookie的對象里,Cookie對象是鍵值對 key=value,對應的鍵是名字,值是id,然后通過響應頭寫回給瀏覽器,瀏覽器會將響應頭信息自動存放到瀏覽器的緩存里。
  用戶登陸成功后,若想訪問服務器端的其他需要權限的頁面時,該請求必須要攜帶瀏覽器之前存儲的session id ,也是通過請求頭的方式,session id到服務端后會搜索是否有該session id 所對應的對象,有就能拿到,說明用戶還處於登陸狀態。
  spring-security的流程其實也是一套對上述流程的封裝,再到后來的整合CAS,依然還是此方式。
  在分布式系統中,整合CAS的原因:
session認證的缺陷:利用服務器的內存資源來存儲session,而一台服務器的內存是不可以共享的,所以如果要多台服務器之間共享session,所以就有了CAS整合。其實這就是session共享的方案。
 

3、OAuth 

  OAuth(開放授權)是一個開放的授權標准,允許用戶讓第三方應用訪問該用戶在某一個web服務器上的私密資源,而無需將用戶名和密碼提供給第三方應用。
  Auth 允許用戶提供一個令牌,而不是用戶名和密碼來訪問它們存放在特定服務器提供者的數據。每一個令牌授權一個特定的第三方系統,在特定的時間段內訪問特定的資源。

 

 

 

 

4、Token Auth

  使用基於Token的身份驗證,在服務端不需要存儲用戶登陸信息。
  流程:
  1、客戶端使用用戶名和密碼請求登陸
  2、服務端收到請求,去驗證用戶名和密碼
  3、驗證完后,服務端會簽發一個Token(包含用戶信息的一個字符串),再把這個Token發送給客戶端
  4、客戶端收到Token后存儲起來,比如存儲到Cookie又或者本地
  5、客戶端每次向服務端請求資源時,需要攜帶服務端簽發的Token
  6、服務端收到請求,然后去驗證客戶端請求里帶着的Token(使用算法驗證),驗證成功,就返回數據給客戶端。
  其他服務器只要是使用同一套算法,就可以做信息的校驗,就不需要做所謂的session共享。
 
  Token Auth 的優點
  Token 機制相對於 Cookie 機制又有什么好處呢?
  支持跨域訪問: Cookie 是不允許垮域訪問的,這一點對 Token 機制是不存在的,
  前提是傳輸的用戶認證信息通過 HTTP 頭傳輸.

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM