鑑權學習筆記

2021-10-05 22:37:26 字數 2108 閱讀 9436

一般來說,乙個**不可能只有乙個操作許可權。如,可能存在未登入的操作許可權,登入的操作許可權,以及管理員的操作許可權。**鑑權的目的就是使用者在進行操作前,對使用者的身份進行識別並判斷是否具有該操作許可權的過程。

鑑權是非常普遍且重要的乙個內容,通俗一點的理解就是登陸賬號,通過登陸建立與伺服器的「信任」,然後就可以賦予客戶端操作的許可權。

3. token驗證

4. oauth(開放授權)

這種授權方式是瀏覽器遵守http協議實現的基本授權方式。http協議定義了基本認證,認證允許http伺服器對客戶端進行使用者身份驗證的方法。

認證過程大致如下:

1.客戶端向伺服器請求資料,假設客戶端尚未被驗證;

2.伺服器向客戶端傳送驗證請求**401,伺服器返回的資料報含:www-authenticate: basic realm=」***」

3.當符合http1.0或1.1規範的客戶端(如ie,firefox)收到401返回值時,將自動彈出乙個登入視窗,要求使用者輸入使用者名稱和密碼。

4.使用者輸入使用者名稱和密碼後,將使用者名稱及密碼以base64加密方式加密,並將密文放入前一條請求資訊中,則客戶端傳送的第一條請求資訊包含如下內容:authorization:

basic d2fuzzp3yw5n(注:d2fuzzp3yw5n表示加密後的使用者名稱及密碼)

5.伺服器收到上述請求資訊後,將authorization欄位後的使用者資訊取出、解密,將解密後的使用者名稱及密碼與使用者資料庫進行比較驗證,如使用者名稱及密碼正確,伺服器則根據請求,將所請求資源傳送給客戶端。

由於base64編碼本身是可逆的過程,所以如果有中間人截獲報文後,通過重放攻擊即可獲取正確授權。基本認證這種方式適合於弱認證要求的場景。

這個方式是利用伺服器端的session(會話)和瀏覽器端的cookie來實現前後端的認證。

認證步驟大致如下:

1.伺服器在接受客戶端首次訪問時在伺服器端建立seesion,然後儲存seesion(我們可以將seesion儲存在記憶體中,也可以儲存在redis中,推薦使用後者),然後給這個session生成乙個唯一的標識字串,然後在響應頭中種下這個唯一標識字串。

2.簽名。這一步只是對sid進行加密處理,服務端會根據這個secret金鑰進行解密。(非必需步驟)

3.瀏覽器中收到請求響應的時候會解析響應頭,然後將sid儲存在本地cookie中,瀏覽器在下次http請求de 請求頭中會帶上該網域名稱下的cookie資訊,

4.伺服器在接受客戶端請求時會去解析請求頭cookie中的sid,然後根據這個sid去找伺服器端儲存的該客戶端的session,然後判斷該請求是否合法。

使用基於 token 的身份驗證方法,大概的流程是這樣的:

客戶端使用使用者名稱跟密碼請求登入

服務端收到請求,去驗證使用者名稱與密碼

驗證成功後,服務端會簽發乙個 token,再把這個 token 傳送給客戶端

客戶端收到 token 以後可以把它儲存起來,比如放在 cookie 裡或者 local storage 裡

客戶端每次向服務端請求資源的時候需要帶著服務端簽發的 token

服務端收到請求,然後去驗證客戶端請求裡面帶著的 token,如果驗證成功,就向客戶端返回請求的資料。

客戶端在首次登陸以後,服務端再次接收http請求的時候,就只認token了,請求只要每次把token帶上就行了,伺服器端會攔截所有的請求,然後校驗token的合法性,合法就放行,不合法就返回401(鑑權失敗)。

session-cookie驗證方式和token驗證方式的區別

sessionid 他只是乙個唯一標識的字串,服務端是根據這個字串,來查詢在伺服器端保持的seesion,這裡面才儲存著使用者的登陸狀態。但是token本身就是一種登陸成功憑證,他是在登陸成功後根據某種規則生成的一種資訊憑證,他裡面本身就儲存著使用者的登陸狀態。伺服器端只需要根據定義的規則校驗這個token是否合法就行。

時效性。session-cookie的sessionid實在登陸的時候生成的而且在登出事時一直不變的,在一定程度上安全就會低,而token是可以在一段時間內動態改變的。

可擴充套件性。token驗證本身是比較靈活的,一是token的解決方案有許多,常用的是jwt(json web token)。

基於cookie的簡單鑑權與JWT鑑權

cookie鑑權在本文沒有做token的加密,通過token 使用者資訊json鍵值對的方式存入redis,這樣避免了session共享的問題,由於本文實現上省略了token加密,不能從cookie裡解密拿到使用者資訊,再加上cookie有被偽造的風險,所以安全性較低.有token加密的實現在本文j...

Asterisk鑑權演算法

客戶端傳送的鑑權資訊如下 digest username 103 realm asterisk nonce 51d89e6e uri sip 102 192.168.50.26 algorithm md5,response e9754418dd7dbea9ba740001f8d62598 aster...

Vue路由鑑權

router index.js var router export default router newrouter 更多.let indexscrolltop 0router.beforeeach to,from next else else else if to.path document.ti...