參考:
https://blog.csdn.net/wang839305939/article/details/78713124
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication
1.HTTP Basic
HTTP 提供一個用于權限控制和認證的通用架構。最常用的HTTP認證方案是HTTP Basic authentication。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLwUFVOhXSE10MNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwgDN3QDM0cTM1EzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
當用戶端向伺服器發送一個請求時,若一開始還未驗證,則伺服器回傳回401未授權,并且傳回WWW-Authenticate來告訴用戶端如何驗證,之後用戶端向服務端發送相應證明自己的比如說密碼,添加在Authorization字段裡,浏覽器會自動進行加密,然後服務端會進行解密驗證,傳回成功,或者未授權。
HTTP Basic一般不是特别安全,不會放比較敏感的内容。
2.session-cookie
一般用于利用伺服器session和浏覽器端的cookie實作前後端驗證。HTTP請求是無狀态,不知道之前的請求來過了沒。記錄狀态可以通過session來進行驗證。同一個客戶都是一個session。
用戶端首次通路服務端,發送請求時,會建立一個session,然後儲存session,并且生成唯一字元串放在響應頭裡,cookie裡,就儲存下來。當再次通路時都會帶上cookie裡的唯一字元串,在服務端對唯一字元串進行認證。
3.Token
類似session+id
用戶端發給服務端帳号密碼,服務端簽發TOKEN,并發回用戶端,用戶端把token存在記憶體或者本地,每次請求需要攜帶token,伺服器接受請求時會驗證token。
登入以後就隻看token了,服務端會攔截所有請求并且驗證token的合法性,不合法傳回401.
session+id需要有cookie,隻有浏覽器可以,就是解析cookie。并且session是一直不變的,而token是可以動态改變的。
token一般可以用JWT (JSON WEB TOKEN)
三部分,(1)頭部:包含類别,加密算法(2)内容:使用者資訊(3)簽名根據加密傳回的簽名子串
4.OAuth
OAuth(開放授權)是一個開放标準,允許使用者授權第三方網站通路他們存儲在另外的服務提供者上的資訊。
過程如圖
第一步 使用者請求授權第三方
第二步 第三方授權傳回使用者憑證
第三步 使用者憑證請求
第四步 傳回對應token
第五步 請求攜帶token
第六步 傳回資源