一、Authorization Header是什麼
Authorization Header是一個HTTP請求頭,用於傳遞一個客戶端的認證憑據,以便伺服器可以驗證客戶端請求的許可權和身份。認證憑據可以包括各種類型的令牌、口令、數字簽名等。
Authorization Header包括了Bearer和Basic兩種類型,它的格式一般是「Authorization: 」,其中表示認證類型,表示認證憑據。
在HTTP請求中,Authorization Header通常用於驗證客戶端對受保護資源的請求許可權,可以告訴伺服器該請求是否是被授權的。
二、Bearer Token認證
Bearer Token是Authorization Header中最常見的一種類型,它使用JWT(JSON Web Token)表示認證憑據。
JWT是一個安全、無狀態且輕量級的登錄認證機制,它包含了在伺服器端進行身份驗證所需的所有信息。JWT由三個部分組成:頭部、載荷和簽名。頭部包含了JWT的元數據,載荷包含了有關用戶身份的信息,簽名則是對頭部和載荷的數字簽名,用來驗證這個JWT是否合法。
Bearer Token的Authorization Header格式如下:
Authorization: Bearer
其中,是由伺服器簽發的JWT。
Bearer Token的優點是可以減少伺服器的負擔,因為伺服器無需查詢資料庫或緩存來驗證授權憑據。而令牌可以存儲在客戶端或者第三方身份提供者,因此它也可以通過Cookies、LocalStorage或SessionStorage等方式在瀏覽器中存儲,使得多數應用支持SSO(單點登錄)。
三、Basic認證
Basic認證是Authorization Header的另一種類型,它使用Base64編碼的用戶名和密碼錶示認證憑據。但是,它的安全性比Bearer Token要差得多,因為這些憑據經過Base64編碼後可以很容易地解碼,尤其在HTTP不安全的情況下,被認為是一種很不安全的驗證方式。
Basic認證的Authorization Header格式如下:
Authorization: Basic
其中,是由Base64編碼後的用戶名和密碼。
四、Authorization Header的常用場景
Authorization Header通常用於驗證客戶端對受保護資源的請求許可權,可以告訴伺服器該請求是否是被授權的。下面是Authorization Header常用的場景:
1. API訪問授權
API訪問授權是一種常見的使用情景,當客戶端通過API訪問伺服器上的資源時,伺服器需要驗證該請求是否是被授權的,這時就可以使用Authorization Header。
例如,客戶端請求伺服器上的某個受保護的資源,伺服器檢查請求頭中的Authorization Header,如果正確則返回請求的資源。
2. 單點登錄(SSO)
單點登錄(SSO)是一種讓用戶只需登錄一次就可以訪問所有相關應用的認證技術。在這種場景下,Authorization Header可以保存認證憑據(如JWT Token)。這可以使用戶在多個應用之間無縫登錄,因為他們只需要一個憑據來獲得所有應用的訪問許可權。
3. 跨域請求驗證
跨域請求驗證是指瀏覽器從一個域名向另一個域名發起請求的情況。由於瀏覽器的同源策略,客戶端不能訪問不同源的資源,為了解決這個問題,可以使用CORS(跨域資源共享)或JSONP技術,同時在請求頭中包含Authorization Header。
五、Authorization Header的代碼示例
下面是Node.js中使用Authorization Header進行API訪問授權的代碼示例:
const request = require('request'); const jwtToken = 'Bearer '; const options = { url: 'http://api.example.com/resource', headers: { 'Authorization': jwtToken } }; request(options, function(error, response, body) { // 處理伺服器的響應結果 });
其中,是伺服器端簽發的JWT Token。
下面是Node.js中使用Authorization Header進行跨域請求驗證的代碼示例:
const request = require('request'); const jwtToken = 'Bearer '; const options = { url: 'http://api.example.com/resource', headers: { 'Authorization': jwtToken, 'Access-Control-Allow-Origin': '*' } }; request(options, function(error, response, body) { // 處理伺服器的響應結果 });
可以看到,在Cross-Origin Resource Sharing(CORS)協議中,Access-Control-Allow-Origin頭用於告訴瀏覽器該資源可以被哪些網站訪問。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/190850.html