http基礎(chǔ)認(rèn)證

認(rèn)證概念
服務(wù)器需要通過某種方式來了解用戶的身份,一旦服務(wù)器知道了用戶的身份,就可以判定用戶可以訪問事務(wù)和資源了;通常通過用戶名和密碼;
HTTP認(rèn)證模型:

質(zhì)詢/響應(yīng)認(rèn)證框架

HTTP的兩個(gè)官方的認(rèn)證協(xié)議:基本認(rèn)證和摘要認(rèn)證
認(rèn)證的四個(gè)步驟
請(qǐng)求: 客戶端發(fā)起一條請(qǐng)求;第一條請(qǐng)求沒有認(rèn)證消息;
質(zhì)詢: 服務(wù)器對(duì)客戶端進(jìn)行質(zhì)詢;返回一條401 Unauthorized響應(yīng),并在www-Authenticate首部說明如何以及在哪里進(jìn)行認(rèn)證;一般指定對(duì)哪個(gè)安全域進(jìn)行認(rèn)證;
授權(quán):客戶端收到401質(zhì)詢,彈出對(duì)話框,詢問用戶名和密碼,用戶輸入用戶名和密碼后,客戶端會(huì)用一個(gè)冒號(hào)將其連接起來,編碼成“經(jīng)過擾碼的”Base-64表示形式,然后將其放在Authorization首部中回送;
成功: 服務(wù)器對(duì)用戶名和密碼進(jìn)行解碼,驗(yàn)證它們的正確性,然后用一條HTTP 200 OK報(bào)文返回所請(qǐng)求的報(bào)文;

基本認(rèn)證實(shí)例

基本認(rèn)證的安全缺陷
這個(gè)基礎(chǔ)認(rèn)證并不安全,因?yàn)槊看蝹鬏敹紩?huì)帶上認(rèn)證信息,并且是明文的(BASE64是編碼,不是加密),因此密碼等信息可能會(huì)被嗅探器發(fā)現(xiàn)。
使用SSL加密信道;使用摘要認(rèn)證;

IIS開啟基礎(chǔ)HTTP認(rèn)證



Tomcat開啟基礎(chǔ)認(rèn)證:

在web.xml里,添加以下配置:

<security-constraint>  
    <web-resource-collection>  
        <web-resource-name>protected Resource</web-resource-name>  
        <url-pattern>/BasicVerify/*</url-pattern>  
    </web-resource-collection>  
      
    <auth-constraint>  
        <role-name>test100</role-name>  
    </auth-constraint>  
</security-constraint>  
  
<login-config>  
    <auth-method>BASIC</auth-method>  
    <realm-name>Default</realm-name>  
</login-config>  

訪問某個(gè)地址(http://localhost:5566/projectname/BasicVerify/test)時(shí),彈出對(duì)話框。
tomcat里本身有個(gè)tomcat-users.xml,所以用戶名密碼啥的,在這個(gè)文件里配置。

<tomcat-users>    
  <role rolename="test100"/>  
  <user username="test123" password="test123" roles="test100"/>  
</tomcat-users> 

通過role-name,實(shí)現(xiàn)web.xml和tomcat-users.xml里的關(guān)聯(lián)。
登錄成功后頁面顯示如下內(nèi)容,最下方是解碼后的用戶名和密碼。

accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*
accept-language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3
user-agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3)
accept-encoding: gzip, deflate
host: 192.168.0.41:8080
connection: Keep-Alive
cookie: JSESSIONID=6AE4989CC03AD16468D2686A717FAE97; jhsessionId=EE8026D614FD04F8CC825E35230DE7CB
authorization: Basic dG9tY2F0OnRvbWNhdA==

--------------------------------------------------------------------------------
tomcat:tomcat 

抓包

在chrome里抓不到包,要使用wireshark或者fiddler。
這是使用fiddler抓到的request包:



response包,可以看到頭部是一個(gè)401:



在response的body里是一個(gè)401頁面,但是沒有顯示在瀏覽器中:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <title>401 Unauthorized</title>
  <style type="text/css">
    <!--
    BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}
    H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
    PRE, TT {border: 1px dotted #525D76}
    A {color : black;}A.name {color : black;}
    -->
  </style>
 </head>

參考: http://www.lxweimin.com/p/3e2d8ad24fec
https://blog.csdn.net/u014006264/article/details/46813925
https://blog.csdn.net/hnzmdpan/article/details/77941616
https://blog.csdn.net/kongxx/article/details/50911018

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,420評(píng)論 6 152
  • 工作流程 一次HTTP操作稱為一個(gè)事務(wù),其工作過程可分為四步: 1)首先客戶機(jī)與服務(wù)器需要建立連接。只要單擊某個(gè)超...
    保川閱讀 4,636評(píng)論 2 14
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng),內(nèi)容來源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,252評(píng)論 3 82
  • 悅悅樂閱讀 61評(píng)論 0 0
  • 對(duì)孩子們來說,這是個(gè)充滿意外的世界。電梯吃人,商場摔人,玻璃門卡人,現(xiàn)在連銀行的填單臺(tái)也能奪命了。 【震驚!銀行填...
    律兜閱讀 245評(píng)論 0 0