標準/規(guī)范
概念
HTTP基本鑒權框架提供了一種通過HTTP Header發(fā)送用戶名/密碼信息到服務器進行登錄的簡單身份鑒定方法。同時定義了與方法匹配的交互方式,比如鑒權失敗時服務器應返回401狀態(tài)碼。
由于不使用form提交也不會出現(xiàn)在請求體內(nèi)容中,減少了一部分CSRF攻擊可能性,更重要的是支持跨域授權(比如OAuth2.0),常用于需要開放資源給域外客戶的場景。
實現(xiàn)
一個標準的HTTP Basic Auth頭規(guī)則并不復雜
Authorization: Basic aG9seWhpZ2g6aGlnaGx5aG9sZQ==
- 協(xié)議頭為:標準HTTP協(xié)議值 Authorization
- 協(xié)議內(nèi)容為:(Basic scheme(方案) + 空格*1 + 鑒權信息)三部分組成
- 鑒權信息為:經(jīng)過Base64編碼的 username:password 格式的字符串,比如上例進行解碼后的身份信息為
holyhigh:highlyhole
風險
- 顯然,Base64并不屬于加密范疇,明碼傳輸很容易被攔截,所以這種方法通常會與TLS一起使用
- 相比跨域登錄,基本鑒權更適合數(shù)據(jù)交換場景,比如將訪問碼放在header中進行資源請求。但如果作為同域內(nèi)的登錄方式 —— 比如獨立構建的web服務請求資源服務授權是可以的
- 如果你已經(jīng)確定將基本鑒權作為跨域數(shù)據(jù)交換的方式,顯然,你需要對協(xié)議值進行各種程度的加密處理,比如與基礎鑒權相關的摘要鑒權(Digest Access Authentication)。當然,你還有其他選擇:OAuth2.0 、JWT