麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 編程應(yīng)用 > 正文

HTTPBasicAuthorization

2019-11-14 17:31:14
字體:
供稿:網(wǎng)友

 在HTTP中,Basic Authorization基本認(rèn)證是一種用來允許Web瀏覽器或其他客戶端程序在請求時提供用戶名和口令形式的身份憑證的一種登錄驗證方式。

在發(fā)送之前是以用戶名追加一個冒號然后串接上口令,并將得出的結(jié)果字符串再用Base64算法編碼。例如,提供的用戶名是Aladdin、口令是open sesame,則拼接后的結(jié)果就是Aladdin:open sesame,然后再將其用Base64編碼,得到QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最終將Base64編碼的字符串發(fā)送出去,由接收者解碼得到一個由冒號分隔的用戶名和口令的字符串。

雖然對用戶名和口令的Base64算法編碼結(jié)果很難用肉眼識別解碼,但它仍可以極為輕松地被計算機所解碼,就像其容易編碼一樣。編碼這一步驟的目的并不是安全與隱私,而是為將用戶名和口令中的不兼容的字符轉(zhuǎn)換為均與HTTP協(xié)議兼容的字符集。

                                                                                                                                                                                                      ------維基百科

一個典型的HTTP客戶端和HTTP服務(wù)器的對話,服務(wù)器安裝在同一臺計算機上(localhost),包含以下步驟:

  • 客戶端請求一個需要身份認(rèn)證的頁面,但是沒有提供用戶名和口令。這通常是用戶在地址欄輸入一個URL,或是打開了一個指向該頁面的鏈接。
  • 服務(wù)端響應(yīng)一個401應(yīng)答碼,并提供一個認(rèn)證域。
  • 接到應(yīng)答后,客戶端顯示該認(rèn)證域(通常是所訪問的計算機或系統(tǒng)的描述)給用戶并提示輸入用戶名和口令。此時用戶可以選擇確定或取消。
  • 用戶輸入了用戶名和口令后,客戶端軟件會在原先的請求上增加認(rèn)證消息頭(值是base64encode(username+":"+passWord)),然后重新發(fā)送再次嘗試。
  • 在本例中,服務(wù)器接受了該認(rèn)證屏幕并返回了頁面。如果用戶憑據(jù)非法或無效,服務(wù)器可能再次返回401應(yīng)答碼,客戶端可以再次提示用戶輸入口令.

一個包含基本認(rèn)證的HTTP請求:

GET /PRivate/index.html HTTP/1.0Host: localhostAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

base64

Python中的base64模塊可以通過base64、base32或base 16編碼將二進制數(shù)據(jù)編碼/解碼為文本。

上面例子中的用戶名為"Aladdin", password為 "open sesame":

>>> import base64>>> print base64.b64encode('Aladdin:open sesame')QWxhZGRpbjpvcGVuIHNlc2FtZQ==>>> print base64.b64decode('QWxhZGRpbjpvcGVuIHNlc2FtZQ==')Aladdin:open sesame

urllib2

python標(biāo)準(zhǔn)庫中使用urllib2來處理基本認(rèn)證。urllib2.HTTPBasicAuthHandler()處理程序可用add_password()來設(shè)置認(rèn)證。

h.add_password(realm,uri,user,passwd)

realm是與驗證相關(guān)聯(lián)的名稱或描述信息,取決于遠(yuǎn)程服務(wù)器。uri是基URL。user和passwd分別指定用戶名和密碼。

import urllib2auth=urllib2.HTTPBasicAuthHandler()auth.add_password('Administrator','http://www.example.com','Dave','123456')opener=urllib2.build_opener(auth)u=opener.open('http://www.example.com/evilplan.html')

源碼中的base64編碼方式:

raw = "%s:%s" % (user, pw)auth = 'Basic %s' % base64.b64encode(raw).strip()

requests

還有一個很常用的requests庫,其中處理基本認(rèn)證:

import requestsrequests.get('https://api.github.com/user', auth=requests.auth.HTTPBasicAuth('user', 'pass'))

因為HTTP Basic Auth很常用,所以也可以直接驗證:

>>> requests.get('https://api.github.com/user', auth=('user', 'pass'))<Response [200]>

或者用request.session()保持認(rèn)證狀態(tài):

s = requests.Session()s.auth = ('user', 'pass')s.get('http://httpbin.org/')   

源碼中的base64編碼方式:

def _basic_auth_str(username, password):    """Returns a Basic Auth string."""    return 'Basic ' + base64.b64encode(('%s:%s' % (username, password)).encode('latin1')).strip().decode('latin1')

  


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产一区二区三区精品在线观看 | 欧美成人免费在线视频 | 国产一区日韩精品 | 成人福利电影在线观看 | 在线观看免费视频麻豆 | 久久国产精品99国产 | 羞羞的| 亚洲第一视频 | 成人免费在线视频播放 | 亚洲第一页夜 | 国产精品视频在 | freexxx69性欧美hd| 91成人免费网站 | 91午夜视频| 国产亚洲精品综合一区91555 | 九色新网址 | 久久国产精品二区 | 久久久久久久久久久国产精品 | 亚洲黑人在线观看 | 欧美一区中文字幕 | 国产一区二区视频网站 | 99亚洲伊人久久精品影院红桃 | 国产精品久久久久无码av | 免费人成在线观看网站 | 欧美中文字幕一区二区三区亚洲 | 在线观看免费毛片视频 | 欧美性生交zzzzzxxxxx | 视频久久免费 | 欧美成人高清视频 | 欧美黄色视屏 | 国产精品成人一区二区三区电影毛片 | av在线免费观看网站 | 精品一区二区三区免费毛片 | 亚洲第一成人在线视频 | 激情视频在线播放 | 全网免费毛片 | av影院在线 | 国产午夜三级一区二区三桃花影视 | 九九精品在线观看视频 | 成人9禁啪啪无遮挡免费 | 成年免费视频黄网站在线观看 |