一、什么是鑒權?
鑒權也就是身份認證,就是驗證您是否有權限從服務器訪問或操作相關數據。發送請求時,通常必須包含相應的檢驗參數以確保請求具有訪問權限並返回所需數據。通俗的講就是一個門禁,您想要進入室內,必須通過門禁驗證身份,這就是鑒權,如打開一個網站必須要輸入用戶名和密碼才可以登錄進入,這種就是鑒權,還有一些業務需要登錄以后才可以進行,因為需要token值,則就可以把token添加到鑒權中,這種也是鑒權。
二、postman鑒權方式
postman 支持多種鑒權方式,如圖

Inherit auth from parent:從父級繼承身份驗證,是每個請求的默認選擇 。這是一個很有用的功能,當我們對一個集合(collection)進行測試的時候,集合中的每個請求都需要獲取token,那么如果我們在集合的根目錄把token獲取到的話,那么該集合下的所有請求就會自動獲取到token,無需任何處理(因為每個請求的Authorization默認選項就是Inherit auto from parent),也就省略了我們對每個token進行處理了
實現步驟:
- 選中一個集合進行編輯,切換到Pre-Request Script.在這里請求登錄接口 ,將返回的token值拿到,然后保存成全局變量 。
- 切換到Authorization選項卡,在這里直接獲取token 。這里的獲取token需要根據具體的項目 。比如我們所測試的項目正好是Bearer token這種形式 。直接在列表中使用這種方式輸入{{token}}即可。
- 向集合添加請求,無需進行token處理,所有接口都能請求成功 。



- No Auth:表示不需要身份認證
- API key:也有很多系統是通過這種認證方式,更多的是系統自定義的認證方式,比如在請求頭添加 model: data xxx-xxx-xxx-xxxx

- Bearer Token :承載令牌,一般也叫 Json web token,就是發送一個 json 格式的 token 令牌,服務端會針對 token 進行解密驗證,令牌是文本字符串,包含在請求標頭中。在請求授權選項卡中,從類型下拉列表中選擇承載令牌。在“ 令牌”字段中,輸入您的API密鑰值,或者為了增加安全性,將其存儲在變量中並按名稱引用該變量。如下圖

postman會將令牌值以要求的格式附加到請求header的文本“ Bearer”上,如下所示:

- Basic Auth:基礎驗證,提供用戶名密碼驗證,postman 會自動生成 authorization,屬於最常用鑒權方式,如圖:在請求授權選項卡中,從類型下拉列表中選擇基本身份驗證,在“ 用戶名”和“ 密碼”字段中輸入您的API登錄詳細信息-為了提高安全性,您可以將其存儲在變量中,如圖:

在請求標頭中,您將看到正在向Authorization標頭傳遞一個表示您的用戶名和密碼值的Base64編碼的字符串,該字符串附加到文本“ Basic”中,如下圖所示

- Digest Auth:摘要式認證。在基本身份認證上面擴展了安全性,服務器為每一個連接生成一個唯一的隨機數,客戶端用這個隨機數對密碼進行 MD5 加密,然后返回服務器,服務器也用這個隨機數對密碼進行加密,然后和客戶端傳送過來的加密數據進行比較,如果一致就返回結果,他是一個二次驗證過程,會有兩次認證交互消息,客戶端請求資源->服務器返回認證標示->客戶端發送認證信息->服務器查驗認證,如下圖示:

Digest Auth下面的高級字段是可選的,postman會在請求運行時自動填充它們。
- OAuth:一般用於第三方身份認證,在不公開密碼的情況下客戶端應用程序可以訪問第三方API提供的數據,有1,2兩個版本,需要提供的信息不太一樣。也是常用的鑒權方式,如下圖

OAuth1.0:輸入必填參數 消費者密鑰、消費者密鑰值,訪問令牌和令牌密鑰值。Postman會嘗試自動完成高級參數填充,當前你也可以自己填寫
然后可以在左側的Add authorization data to的下拉列表中選擇在請求頭、URL還是請求體中傳遞身份驗證詳細信息,這個身份驗證信息數據在哪里傳遞取決與請求類型,一般post或put請求就是添加到body里面,如果是get請求就會添加到URL里面

OAuth2.0:也可以在左側的Add authorization data to的下拉列表中選擇在請求頭還是URL中傳遞身份驗證詳細信息

然后在Configure New Token里面配置相關信息得到新令牌,需要輸入客戶端應用程序的詳細信息,以及服務提供商提供的所有身份驗證詳細信息

請求新訪問令牌的參數是根據Grant Type類型來的:Grant Type類型如下

請求新訪問令牌的參數的完整列表如下:
1)令牌名稱:您要用於令牌的名稱。
2)授予類型:選項的下拉列表-這將取決於API服務提供商的要求。
3)回調URL:身份驗證后重定向到的客戶端應用程序回調URL,應在API提供程序中注冊。如果未提供,Postman將使用默認的空URL並嘗試從中提取代碼或訪問令牌-如果此方法不適用於您的API,則可以使用以下URL:https://www.getpostman.com/oauth2/callback
4)身份驗證URL: API提供程序授權服務器的端點,用於檢索身份驗證代碼。
5)訪問令牌URL:提供商的身份驗證服務器,用於交換訪問令牌的授權代碼。
6)客戶端ID:您在API提供商處注冊的客戶端應用程序的ID。
7)客戶端機密: API提供商提供給您的客戶端機密。
8)范圍:您所請求的訪問范圍,其中可能包含多個以空格分隔的值。
9)狀態:不透明的值,以防止跨站點請求偽造。
10)客戶端身份驗證:一個下拉列表-在標頭中發送基本身份驗證請求,或在請求正文中發送客戶端憑據。升級到新版本后,請更改此下拉菜單中的值,以避免客戶端身份驗證出現問題。
配置完成后,點擊Get New Access Token按鈕。如果您成功從API接收到令牌,則可以看到其詳細信息、到期時間以及可選的刷新令牌,當當前令牌過期時,您可以使用該令牌來獲取新的訪問令牌。單擊“ Use Token”以選擇返回的值。
所有成功獲取到的令牌都將在請求“ Available Tokens”下拉列表中列出。選擇一個用來發送您的請求。在下拉列表中可以管理所有令牌,如查看詳細信息或刪除令牌。
- Hawk Authentication:是另一種認證方案,采用的叫消息碼認證算法,和 Digest 認證類似,它也是需要二次交互的

Hawk身份驗證參數如下:
1)Hawk身份驗證ID:您的API身份驗證ID值。
2)Hawk身份驗證密鑰:您的API身份驗證密鑰值。
3)算法:用於創建消息認證碼(MAC)的哈希算法。
高級參數:
1)用戶:用戶名。
2)Nonce:客戶端生成的隨機字符串。
3)ext:與請求一起發送的任何特定於應用程序的信息。
4)app:憑據與應用程序之間的綁定,以防止攻擊者使用發布給他人的憑據。
5)dlg:頒發證書的應用程序的ID。
6)時間戳:服務器用來防止在時間窗口之外進行重放攻擊的時間戳。
- AWS Signature:是針對亞馬遜的 AWS 公有雲用戶簽名的認證方式
- NTLM:是微軟的局域網管理認證協議
- Akamai EdgeGrid:是 Akamai 的專屬認證協議
最常用的兩種鑒權方式為:Basic 以及 OAuth2
