认证模式之Basic模式
HTTP協(xié)議規(guī)范中有兩種認(rèn)證方式,一種是Basic認(rèn)證,另外一種是Digest認(rèn)證,這兩種方式都屬于無(wú)狀態(tài)認(rèn)證方式,所謂無(wú)狀態(tài)即服務(wù)端都不會(huì)在會(huì)話(huà)中記錄相關(guān)信息,客戶(hù)端每次訪問(wèn)都需要將用戶(hù)名和密碼放置報(bào)文一同發(fā)送給服務(wù)端,但這并不表示你在瀏覽器中每次訪問(wèn)都要自己輸入用戶(hù)名和密碼,可能是你第一次輸入賬號(hào)后瀏覽器就保留在內(nèi)存中供后面的交互使用。先看下HTTP協(xié)議的Basic認(rèn)證模式。
既然是HTTP協(xié)議規(guī)范,那其實(shí)就是約束瀏覽器廠商與web容器廠商實(shí)現(xiàn)各自軟件時(shí)的行為約束,例如典型的一個(gè)認(rèn)證交互過(guò)程是:瀏覽器向web容器發(fā)送http請(qǐng)求報(bào)文,web容器接收到http請(qǐng)求報(bào)文后解析需要訪問(wèn)的資源,如果該資源剛好是受保護(hù)資源,web容器則向?yàn)g覽器發(fā)送認(rèn)證http響應(yīng)報(bào)文,瀏覽器接收到報(bào)文后彈出窗口讓用戶(hù)輸入賬號(hào)及密碼,接著再次發(fā)送包含了賬號(hào)信息的http請(qǐng)求報(bào)文,web容器對(duì)賬號(hào)信息進(jìn)行鑒權(quán),通過(guò)驗(yàn)證則返回對(duì)應(yīng)資源,否則重新認(rèn)證。
Basic Access Authentication scheme是在HTTP1.0提出的認(rèn)證方法,它是一種基于challenge/response的認(rèn)證模式,針對(duì)特定的realm需要提供用戶(hù)名和密碼認(rèn)證后才可訪問(wèn),其中密碼使用明文傳輸。Basic模式認(rèn)證過(guò)程如下:
①瀏覽器發(fā)送http報(bào)文請(qǐng)求一個(gè)受保護(hù)的資源。
②服務(wù)端的web容器將http響應(yīng)報(bào)文的響應(yīng)碼設(shè)為401,響應(yīng)頭部加入WWW-Authenticate: Basic?realm=”myTomcat”。
③瀏覽器彈出對(duì)話(huà)框讓用戶(hù)輸入用戶(hù)名和密碼,并用Base64進(jìn)行編碼,實(shí)際是用戶(hù)名+冒號(hào)+密碼進(jìn)行Base64編碼,即Base64(username:password),這次瀏覽器就會(huì)在HTTP報(bào)文頭部加入Authorization: Basic bXl0b21jYXQ=。
④服務(wù)端web容器獲取HTTP報(bào)文頭部相關(guān)認(rèn)證信息,匹配此用戶(hù)名與密碼是否正確,是否有相應(yīng)資源的權(quán)限,如果認(rèn)證成功則返回相關(guān)資源,否則再執(zhí)行②,重新進(jìn)行認(rèn)證。
⑤以后每次訪問(wèn)都要帶上認(rèn)證頭部。
服務(wù)端返回的認(rèn)證報(bào)文中包含了realm=”myTomcat”,realm的值用于定義保護(hù)的區(qū)域,在服務(wù)端可以通過(guò)realm將不同的資源分成不同的域,域的名稱(chēng)即為realm的值,每個(gè)域可能會(huì)有自己的權(quán)限鑒別方案。
Basic認(rèn)證模式有兩個(gè)明顯的缺點(diǎn):①無(wú)狀態(tài)導(dǎo)致每次通信都要帶上認(rèn)證信息,即使是已經(jīng)認(rèn)證過(guò)的資源;②傳輸安全性不足,認(rèn)證信息用Base64編碼,基本就是明文傳輸,很容易對(duì)報(bào)文截取并盜用認(rèn)證信息。
?
轉(zhuǎn)載于:https://www.cnblogs.com/ostin/p/9327926.html
總結(jié)
以上是生活随笔為你收集整理的认证模式之Basic模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 爬取京东网页评论(动态网页)
- 下一篇: 一些记录