當前位置:
首頁 > 最新 > 11 requests的身份認證方式

11 requests的身份認證方式

requests提供多種身份認證方式,包括基本身份認證、netrc 認證、摘要式身份認證、OAuth 1 認證、OAuth 2 與 OpenID 連接認證、自定義認證。這些認證方式的應用場景是什麼呢?


身份認證是使用用戶提供的憑證來識別用戶。

session會話保存,用來保持會話的狀態;

token是對用戶進行授權。

身份認證和授權的關係:需要先獲取身份信息才能進行授權


HTTP Basic Auth是HTTP1.0提出的認證方式

客戶端對於每一個realm,通過提供用戶名和密碼來進行認證的方式

當認證失敗時,伺服器收到客戶端請求,返回401 UNAUTHORIZED,同時在HTTP響應頭的WWW-Authenticate域說明認證方式及認證域

requests以 HTTP Basic Auth 發送請求,示例:

事實上,HTTP Basic Auth 如此常見,Requests 就提供了一種簡寫的使用方式(事實上,很難找到用http基本身份認證方式的網站了):


如果認證方法沒有收到 auth 參數,Requests 將試圖從用戶的 netrc 文件中獲取 URL 的 hostname 需要的認證身份

如果找到了 hostname 對應的身份,就會以 HTTP Basic Auth 的形式發送請求

簡而言之,需要預先將認證的host及用戶名、密碼以明文方式存在netrc文件中,這種方式也是非常不安全的

digest authentication:在HTTP 1.1提出,目的是替代http 1.0提出的基本認證方式

伺服器收到客戶端請求後返回401 UNAUTHORIZED,同時在WWW-Authenticate欄位說明認證方式是Digest,其他信息還有realm域信息、nonce隨機字元串、opaque透傳欄位(客戶端會原樣返回)等

摘要式身份認證的步驟

客戶端訪問一個受http摘要認證保護的資源。

伺服器返回401狀態以及nonce等信息,要求客戶端進行認證。

客戶端將以用戶名,密碼,nonce值,HTTP方法, 和被請求的URI為校驗值基礎而加密(默認為MD5演算法)的摘要信息返回給伺服器。

認證必須的五個情報:

如果認證成功,則返回相應的資源。如果認證失敗,則仍返回401狀態,要求重新進行認證。

注意事項:

※ nonce:隨機字元串,每次返回401響應的時候都會返回一個不同的nonce。

※ nounce:隨機字元串,每個請求都得到一個不同的nounce。

※ MD5(Message Digest algorithm 5,信息摘要演算法)

1)用戶名:realm:密碼 ha1

2)HTTP方法:URI ha2

3)ha1:nonce:nc:cnonce:qop:ha2 ha3

避免將密碼作為明文在網路上傳遞,相對提高了HTTP認證的安全性。

當用戶為某個realm首次設置密碼時,伺服器保存的是以用戶名,realm,密碼為基礎計算出的哈希值(ha1),而非密碼本身。

如果qop=auth-int,在計算ha2時,除了包括HTTP方法,URI路徑外,還包括請求實體主體,從而防止PUT和POST請求表示被人篡改。

但是因為nonce本身可以被用來進行摘要認證,所以也無法確保認證後傳遞過來的數據的安全性。


另一種非常流行的 HTTP 身份認證形式是摘要式身份認證,Requests 對它的支持也是開箱即可用的。

可以看到,當認證失敗,返回401時,header中包含的信息:

image.png


Oauth 是一種常見的 Web API 認證方式。 庫可以讓 Requests 用戶簡單地創建 OAuth 認證的請求。

查看OAuth1的原理,可以查看微博的api:http://open.weibo.com/wiki/index.php/Oauth

要使用OAuth驗證,首先需要獲取到對應的access_token等信息。

官方示例如下:

OAuth1.png

OAuth2是OAuth1的升級版,requests-oauthlib 庫還可以處理 OAuth 2,OAuth 2 是 OpenID 連接的基礎機制。


每次登錄後,返回的token信息都是不同的,因此要再次向服務端傳送token信息;

以github介面為例,獲得token後,查看用戶擁有的許可權:

image.png


理解基本認證方式和摘要認證方式的原理

OAuth認證是目前大部分api採用的認證方式

token是在伺服器端生成的一個令牌,這個令牌有時間期限和許可權,就比如皇宮大內中的不同職責的人員拿著令牌能進入的場所不同

作者: 樂大爺

博客:https://www.jianshu.com/u/39cef8a56bf9

聲明:本文已獲作者授權轉載,著作權歸作者所有。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 開源優測 的精彩文章:

大數據測試學習筆記之測試工具集
二十一條自動化測試過程中遭遇的問題及解決思路

TAG:開源優測 |