HTTP Authentication(HTTP認證)(轉)

HTTP協議規范中有兩種認證方式,一種是Basic認證,另外一種是Digest認證,這兩種方式都屬于無狀態認證方式,所謂無狀態即服務端都不會在會話中記錄相關信息,客戶端每次訪問都需要將用戶名和密碼放置報文一同發送給服務端,但這并不表示你在瀏覽器中每次訪問都要自己輸入用戶名和密碼,可能是你第一次輸入賬號后瀏覽器就保留在內存中供后面的交互使用。

BASIC基本認證

概述 ? ? ? ?

? ? ? ? 當一個客戶端向HTTP服務器進行數據請求時,如果客戶端未被認證,則HTTP服務器將通過基本認證過程對客戶端的用戶名及密碼進行驗證,以決定用戶是否合法。客戶端在接收到HTTP服務器的身份認證要求后,會提示用戶輸入用戶名及密碼,然后將用戶名及密碼以BASE64加密,加密后的密文將附加于請求信息中, 如當用戶名為chackca,密碼為:123456時,客戶端將用戶名和密碼用“:”合并,并將合并后的字符串用BASE64加密為密文,并于每次請求數據時,將密文附加于請求頭(Request Header)中。HTTP服務器在每次收到請求包后,根據協議取得客戶端附加的用戶信息(BASE64加密的用戶名和密碼),解開請求包,對用戶名及密碼進行驗證,如果用戶名及密碼正確,則根據客戶端請求,返回客戶端所需要的數據;否則,返回錯誤代碼或重新要求客戶端提供用戶名及密碼。

?

BASIC認證的過程

基本認證步驟:
? ? ? ? 1、客戶端訪問一個受http基本認證保護的資源。
? ? ? ?2、服務器返回401狀態,要求客戶端提供用戶名和密碼進行認證。(驗證失敗的時候,響應頭會加上WWW-Authenticate: Basic realm="請求域"。)
? ? ? ? ? ? ? ? 401 Unauthorized
? ? ? ? ? ? ? ? WWW-Authenticate: Basic realm="WallyWorld"
? ? ? 3、客戶端將輸入的用戶名密碼用Base64進行編碼后,采用非加密的明文方式傳送給服務器。Authorization: Basic xxxxxxxxxx.
? ? ? ? 4、服務器將Authorization頭中的用戶名密碼解碼并取出,進行驗證,如果認證成功,則返回相應的資源。如果認證失敗,則仍返回401狀態,要求重新進行認證。

?

? ? ? ? 服務端返回的認證報文中包含了realm=”myTomcat”,realm的值用于定義保護的區域,在服務端可以通過realm將不同的資源分成不同的域,域的名稱即為realm的值,每個域可能會有自己的權限鑒別方案。

Basic認證的一些特點

? ? ? ? 1、Http是無狀態的,同一個客戶端對同一個realm內資源的每一個訪問會被要求進行認證。
? ? ? ? 2、客戶端通常會緩存用戶名和密碼,并和authentication realm一起保存,所以,一般不需要你重新輸入用戶名和密碼。
? ? ? ? 3、以非加密的明文方式傳輸,雖然轉換成了不易被人直接識別的字符串,但是無法防止用戶名密碼被惡意盜用。雖然用肉眼看不出來,但用程序很容易解密。

優點:

? ? ? ? 基本認證的一個優點是基本上所有流行的網頁瀏覽器都支持基本認證。基本認證很少在可公開訪問的互聯網網站上使用,有時候會在小的私有系統中使用(如路由器網頁管理接口)。后來的機制HTTP摘要認證是為替代基本認證而開發的,允許密鑰以相對安全的方式在不安全的通道上傳輸。

缺點:

雖然基本認證非常容易實現,但該方案建立在以下的假設的基礎上,即:客戶端和服務器主機之間的連接是安全可信的。特別是,如果沒有使用SSL/TLS這樣的傳輸層安全的協議,那么以明文傳輸的密鑰和口令很容易被攔截。該方案也同樣沒有對服務器返回的信息提供保護。
現存的瀏覽器保存認證信息直到標簽頁或瀏覽器被關閉,或者用戶清除歷史記錄。HTTP沒有為服務器提供一種方法指示客戶端丟棄這些被緩存的密鑰。這意味著服務器端在用戶不關閉瀏覽器的情況下,并沒有一種有效的方法來讓用戶登出。
?

什么是Realm

Tomcat提供Realm支持。
Tomcat使用Realm使某些特定的用戶組具有訪問某些特定的Web應用的權限,而沒有權限的用戶不能訪問這個應用。
Tomcat提供了三種不同Realm對訪問某個Web應用程序的用戶進行相應的驗證。

? ? ? ? 1、JDBCRealm,這個Realm將用戶信息存在數據庫里,通過JDBC從數據庫中獲得用戶信息并進行驗證。

? ? ? ? 2、JNDIRealm,將用戶信息存在基于LDAP等目錄服務的服務器里,通過JNDI技術從LDAP服務器中獲取用戶信息并進行驗證。

? ? ? ? 3、MemoryRealm,將用戶信息存在一個xml文件中,對用戶進行驗證時,將會從相應的xml文件中提取用戶信息。manager(Tomcat提供的一個web應用程序)應用在進行驗證時即使用此種Realm。Realm類似于Unix里面的group。在Unix中,一個group對應著系統的一定資源,某個group不能訪問不屬于它的資源。Tomcat用Realm來對不同的應用(類似系統資源)賦給不同的用戶(類似group)。沒有權限的用戶則不能訪問這個應用。

?

?

DIGEST摘要認證

https://www.cnblogs.com/huey/p/5490759.html

? ? ? ? 基本認證便捷靈活,但極不安全。用戶名和密碼都是以明文形式傳送的,也沒有采取任何措施防止對報文的篡改。安全使用基本認證的唯一方式就是將其與 SSL 配合使用。

? ? ? ? 摘要認證是另一種 HTTP 認證協議,它與基本認證兼容,但卻更為安全。摘要認證試圖修復基本認證協議的嚴重缺陷。具體來說,摘要認證進行了如下改動:

永遠不會以明文方式在網絡上發送密碼。
可以防止惡意用戶捕獲并重放認證的握手過程。
可以有選擇地防止對報文內容的篡改。
防范其他幾種常見的攻擊方式。
? ? ? ? 摘要認證并不是最安全的協議。摘要認證并不能滿足安全 HTTP 事務的很多需求。對這些需求來說,使用 TLS 和 HTTPS 協議更為合適一些。但摘要認證比它要取代的基本認證強大很多。

?

? ? ? ? a) 客戶端請求了某個受保護文檔。

? ? ? ? b) 在客戶端能夠證明其知道密碼從而確認其身份之前,服務器拒絕提供文檔。服務器向客戶端發起質詢,詢問用戶名和摘要形式的密碼。

? ? ? ? c) 客戶端傳遞了密碼的摘要(用戶輸入實際的密碼,客戶端再將這個密碼轉化為摘要后再發送),證明它是知道密碼的。服務器知道所有用戶的密碼,因此可以將客戶提供的摘要與服務器自己計算得到的摘要進行比較,以驗證用戶是否知道密碼。另一方在不知道密碼的情況下,很難偽造出正確的摘要。

? ? ? ? d) 服務器將客戶端提供的摘要與服務器內部計算出的摘要進行對比。如果匹配,就說明客戶端知道密碼(或者很幸運地猜中了!)。可以設置摘要函數,使其產生很多數字,讓人不可能幸運地猜中摘要。服務器進行了匹配驗證之后,會將文檔提供給客戶端——整個過程都沒有在網絡上發送密碼。

?

重放攻擊

? ? ? ? 使用摘要就無需以明文形式發送密碼了。可以只發送密碼的摘要,而且可以確信,沒有哪個惡意用戶能輕易地從摘要中解碼出原始密碼。

? ? ? ? 但是,僅僅隱藏密碼并不能避免危險,因為即便不知道密碼,別有用心的人也可以截獲摘要,并一遍遍地重放給服務器。摘要和密碼一樣好用。

? ? ? ? 為防止此類重放攻擊的發生,服務器可以向客戶端發送了一個稱為隨機數 (nonce) 的特殊令牌,這個數會經常發生變化(可能是每毫秒,或者是每次認證都變化)。客戶端在計算摘要之前要先將這個隨機數令牌附加到密碼上去。

? ? ? ? 在密碼中加入隨機數就會使摘要隨著隨機數的每一次變化而變化。記錄下的密碼摘要只對特定的隨機數有效,而沒有密碼的話,攻擊者就無法計算出正確的摘要,這樣就可以防止重放攻擊的發生。

? ? ? ? 摘要認證要求使用隨機數,因為這個小小的重放弱點會使未隨機化的摘要認證變得和基本認證一樣脆弱。隨機數是在 WWW-Authenticate 質詢中從服務器傳送給客戶端。

?

摘要認證的握手機制(簡化的摘要認證三步握手機制)

?

? ? ? ? (1) 服務器計算出一個隨機數。

? ? ? ? (2) 服務器將這個隨機數放在 WWW-Authenticate 質詢報文中,與服務器所支持的算法列表一同發往客戶端。

? ? ? ? (3) 客戶端選擇一個算法,計算出密碼和其他數據的摘要。

? ? ? ? (4) 客戶端將摘要放在一條 Authorization 報文中發回服務器。如果客戶端要對服務器進行認證,可以發送客戶端隨機數。

? ? ? ? (5) 服務器接收摘要、選中的算法以及支撐數據,計算出與客戶端相同的摘要。然后服務器將本地生成的摘要與網絡傳送過來的摘要進行比較,驗證是否匹配。如果客戶端反過來用客戶端隨機數對服務器進行質詢,就會創建客戶端摘要。服務器可以預先將下一個隨機數計算出來,提前將其傳遞給客戶端,這樣下一次客戶端就可以預先發送正確的摘要了。

?

?

?

Cookie Auth

? ? ? ? Cookie認證機制:用戶輸入用戶名和密碼發起請求,服務器認證后給每個Session分配一個唯一的JSESSIONID,并通過Cookie發送給客戶端。

? ? ? ? 當客戶端發起新的請求的時候,將在Cookie頭中攜帶這個JSESSIONID。這樣服務器能夠找到這個客戶端對應的Session。默認的,當我們關閉瀏覽器的時候,客戶端cookie會被刪除,可以通過修改cookie 的expire time使cookie在一定時間內有效。但是服務器端的session不會被銷毀,除非通過invalidate或超時。

?

Token Auth(JWT)

?

?

Token Auth優點:

減輕服務器壓力:通過token可以將用戶的基本信息(非隱私的,比如UserId,過期時間,生成的隨機key等)全部加密簽名后放入token中,從而服務器端不需要保存用戶登錄信息,大大減輕服務器壓力。用戶認證完全靠token識別,通過簽名來保證token沒有被修改過(只有服務器才知道秘鑰,比如常見的非對稱加密算法),是服務器下發的token。
支持跨域訪問:因為服務器并沒有保存登錄狀態,完全靠簽名的token識別,那么另一個網站只要有對應的私鑰,就可以對token驗證,前提是傳輸的用戶認證信息通過HTTP頭傳輸;
更適用CDN: 可以通過內容分發網絡請求你服務端的所有資料(如:javascript,HTML,圖片等),因為不需要同步服務器上的登錄狀態信息;
性能更好: 因為從token中可以獲得userId,不用查詢登錄狀態表;

原文:https://blog.csdn.net/qq_35642036/article/details/82788588?

轉載于:https://www.cnblogs.com/NetPig/p/10917282.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536438.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536438.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536438.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

們--加強斐波那契【遞推】

們--加強斐波那契 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 對于斐波那契數列想必各位已經見過了。這里給出一個加強版。 F[i] i (i < 3); F[i] F[i-1] F[i-2] F[i-3](i > 4); Input 多組輸入。每組輸入一…

inux CentOS 7 修改內核啟動默認順序

2019獨角獸企業重金招聘Python工程師標準>>> inux CentOS 7 修改內核啟動默認順序 2018年12月07日 09:53:32 XueShengke 閱讀數&#xff1a;781 轉載于&#xff1a;21運維 Linux CentOS 7.X 如何修改內核啟動默認順序 我們知道&#xff0c;centos 6.x是通過/etc/gr…

快速掌握ajax!

ajax是什么&#xff1f;ajax——asynchronous JavaScript and xml&#xff1a;異步的js和xml它能使用js訪問服務器&#xff0c;而且是異步訪問服務器給客戶端的響應一般是整個頁面&#xff0c;一個html完整頁面&#xff01;但在ajax中因為是局部刷新&#xff0c;那么服務器就不…

鎖底層之內存屏障與原語指令

Java內存模型1&#xff0e;工作內存和主內存Java內存模型規定所有的變量都存儲在主內存中&#xff08;JVM內存的一部分&#xff09;&#xff0c;每個線程有自己獨立的工作內存&#xff0c;它保存了被該線程使用的變量的主內存復制。線程對這些變量的操作都在自己的工作內存中進…

微信點擊鏈接,用默認瀏覽器中打開指定網址鏈接!

2019獨角獸企業重金招聘Python工程師標準>>> 最近有客戶咨詢&#xff0c;自己的鏈接在微信種推廣&#xff0c;經常會被無緣無故封殺&#xff0c;有沒有一種功能&#xff0c;用戶在微信中點擊我們推廣的鏈接&#xff0c;可以自動強制跳轉到手機默認瀏覽器中打開指定的…

elasticsearch存儲空間不足導致索引只讀,不能創建

問題描述 1.添加數據時&#xff0c;報錯&#xff0c;原因是&#xff0c;一旦在存儲超過95&#xff05;的磁盤中的節點上分配了一個或多個分片的任何索引&#xff0c; 該索引將被強制進入只讀模式 ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow del…

java版spring cloud+spring boot 社交電子商務平臺:服務消費(基礎)

使用LoadBalancerClientSpring cloud b2b2c電子商務社交平臺源碼請加企鵝求求&#xff1a;一零三八七七四六二六。在Spring Cloud Commons中提供了大量的與服務治理相關的抽象接口&#xff0c;包括DiscoveryClient、這里我們即將介紹的LoadBalancerClient等。對于這些接口的定義…

Monthly Expense【二分】

B - Monthly Expense POJ - 3273 Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤ moneyi ≤ 10,000) that he will need to spend …

關于HTTP協議,一篇就夠了

原文地址&#xff1a;https://www.cnblogs.com/ranyonsue/p/5984001.html HTTP簡介 HTTP協議是Hyper Text Transfer Protocol&#xff08;超文本傳輸協議&#xff09;的縮寫,是用于從萬維網&#xff08;WWW:World Wide Web &#xff09;服務器傳輸超文本到本地瀏覽器的傳送協議…

Oracle關聯查詢-數據類型不一致問題 ORA-01722: 無效數字

一、存在表A和表B&#xff0c;都包含字段user_no&#xff0c;但數據類型不一致&#xff0c;如下&#xff1a; create table A ( user_id varchar2(20), user_no number(12,0), xxx ); create table B ( user_name varchar2(60), user_no varchar2(20), xxx ); 二、現有某項業務…

1096: 字符逆序

1096: 字符逆序 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 2017 Solved: 1059 [Submit][Status][Web Board] Description 將一個字符串str的內容顛倒過來&#xff0c;并輸出。str的長度不超過100個字符。 Input 輸入包括一行。 第一行輸入的字符串。 Output 輸出…

Ajax_Apache訪問資源文件的權限配置、資源存放路徑配置、配置虛擬主機、動態網站靜態網站區別...

1、配置資源的訪問權限 修改配置文件&#xff1a;httpd.conf 文件 改完之后要重啟 2、切換資源默認存放目錄www 修改配置文件httpd.conf 文件中的存放目錄 3、Apache是否能夠同時支持多個站點 Apache能否支持通過不同的域名訪問不同的站點 可以 做法&#xff1a;配置虛擬主機…

Public Sale【博弈】

Public Sale Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10573 Accepted Submission(s): 6257 Problem Description 雖然不想&#xff0c;但是現實總歸是現實&#xff0c;Lele始終沒有逃過退學的命運&am…

Being a Good Boy in Spring Festival【博弈】

Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8876 Accepted Submission(s): 5446 Problem Description 一年在外 父母時刻牽掛 春節回家 你能做幾天好孩子嗎 寒假里…

web安全之文件上傳漏洞攻擊與防范方法

2019獨角獸企業重金招聘Python工程師標準>>> 一、 文件上傳漏洞與WebShell的關系 文件上傳漏洞是指網絡攻擊者上傳了一個可執行的文件到服務器并執行。這里上傳的文件可以是木馬&#xff0c;病毒&#xff0c;惡意腳本或者WebShell等。這種攻擊方式是最為直接和有效的…

Rabbit and Grass【博弈】

Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4728 Accepted Submission(s): 3592 Problem Description 大學時光是浪漫的&#xff0c;女生是浪漫的&#xff0c;圣誕更是浪漫的&#xff…

蘋果可彎曲屏幕新專利獲準,折疊iPhone最快2020年現身?

當三星Galaxy Fold、華為Mate X等折疊手機陸續問世時&#xff0c;所有果粉都想問一個問題折疊iPhone在哪里&#xff1f;就在最近有報導指出&#xff0c;蘋果獲得一項關于折疊屏幕的新專利。新專利出爐&#xff0c;但折疊iPhone還要再等等。本周二&#xff0c;美國專利與商標局授…

Brave Game【博弈】

Brave Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14813 Accepted Submission(s): 10086 Problem Description 十年前讀大學的時候&#xff0c;中國每年都要從國外引進一些電影大片&#xff0c;其中…

Google File System 學習筆記

GFS翻譯&#xff1a;https://www.cnblogs.com/cxxjohnson/p/4984309.html 一、GFS架構&#xff1a; 二、保存文件的方式 1、保存小文件&#xff1a;磁盤中分塊&#xff0c;每個block大小為1024Byte,每個文件的索引由塊號偏置組成 2、保存大文件&#xff1a;把block換成chunk,每…

探討奇技淫巧

2019獨角獸企業重金招聘Python工程師標準>>> 探討奇技淫巧 起源 在工程實踐中&#xff0c;我們常常會遇到一些奇技淫巧。所謂奇技淫巧&#xff0c;就是官方在設計或者實踐中并未想象出的代碼風格或者使用場景。其實也就是類似于 react 的 hoc,本來源自于社區&#x…