postman認證使用篇(五)


postman 認證使用篇(五)

Authorization

盡管請求編輯器已經足夠強大去構造各種各樣的請求,但是有的時候你的請求可能是需要認證,那么就可以嘗試使用下面的認證功能了(由於認證的參數信息屬於敏感數據,為了保證在協作環境中工作時數據的安全,建議使用變量)

圖片描述

下面分別說明下拉選項中的認證方式:

No Auth

不需要認證,這是默認選中的

Bearer Auth

圖片描述

填寫Token進行驗證,JWT中有使用

Basic Auth 基礎身份驗證

圖片描述

輸入用戶名和密碼,直接發送明文數據,在點擊Preview Request按鈕就會自動在Headers中生成authorization header.

或者直接發送請求,也會自動把authorizationheader 添加到 Headers
圖片描述

Digest Auth 摘要認證

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

過程:

  1. 發送一個請求

        GET /auth/basic/ HTTP/1.1
     HOST: target
  2. 服務器返回401響應頭,要求輸入用戶憑據

        HTTP/1.1 401 Unauthorized
        WWW-Authenticate: Digest realm="Digest Encrypt",nonce="nmeEHKLeBAA=aa6ac7ab3cae8f1b73b04e1e3048179777a174b3", opaque="0000000000000000",stale=false, algorithm=MD5, qop="auth"
  3. 輸入憑據后再發送請求

        GET /auth/digest/ HTTP/1.1
        Accept: */*
        Authorization:  Digest username="LengWa", realm="Digest Encrypt",  qop="auth", algorithm="MD5", uri="/auth/digest/", nonce="nmeEHKLeBAA=aa6ac7ab3cae8f1b73b04e1e3048179777a174b3", nc=00000001, cnonce="6092d3a53e37bb44b3a6e0159974108b", opaque="0000000000000000", response="652b2f336aeb085d8dd9d887848c3314"
  4. 服務端驗證通過后返回數據

返回401請求頭時,對於WWW-Authenticate 各個域的作用:

  • realm: 是一個簡單的字符串,一般是是郵件格式

  • qop: 是認證的(校驗)方式,這個比較重要,對后面md5的加密過程有影響

  • nonce: 是一個字符串,唯一的、不重復的(還可以包含一些有用的信息,進行驗證)

  • opaque: 是個字符串,它只是透傳而已,即客戶端還會原樣返回過來

  • username: 用戶認證的用戶名

  • uri: 本次資源的位置

  • cnonce: 客戶端隨機參數的GUID

  • nc: 是認證的次數,因為如果認證失敗,則仍然可以重新發送認證信息繼續認證

  • response: 這個值很重要,是根據以上信息加上密碼根據一定的順序加密生成的MD5值,服務端在收到這個信息后,也根據相同的方式計算出這個值,而密碼保存在服務端。服務端根據用戶名去找密碼,計算出MD5值,如果和客戶端傳過來一致,就認證通過,否則不通過

OAuth 1.0 / OAuth 2.0

現在大多數授權登錄都是基於 OAuth 2.0

這兩種認證方式,就不具體介紹了。網上講解的比較多

不了解的可以看看這個文檔:理解OAuth

Hawk authentication

圖片描述

hawk是一個HTTP認證方案,使用MAC(Message Authentication Code,消息認證碼算法)算法,它提供了對請求進行部分加密驗證的認證HTTP請求的方法,包括HTTP方法、請求URI和主機。

hawk方案要求提供一個共享對稱密匙在服務器與客戶端之間,通常這個共享的憑證在初始TLS保護階段建立的,或者是從客戶端和服務器都可用的其他一些共享機密信息中獲得的

舉例過程:

  1. 發起一個資源請求

    GET /resource/1?b=1&a=2 HTTP/1.1
    Host: 127.0.0.1:8000
  2. 服務器返回401響應頭

    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: Hawk
  3. 客戶端之前已經獲取一組Hawk訪問資源的資格證書在對應的服務器上資格證書包含以下的屬性:

    Key identifier(Hawk Auth ID): dh37fgj492je
    Key(Hawk Auth Key): werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn
    Algorithm: hmac-sha-256
  4. 客戶端通過計算時間戳來生成認證報頭,並構造標准的請求字符串

    1353832234
    GET
    /resource/1?b=1&a=2
    127.0.0.1
    8000
    some-app-data
  5. 使用Hawk憑證中的Algorithm指定的加密算法加上Key(Hawk Auth Key)指定的key進行加密,之后把結果在經過bae64轉碼為/uYWR6W5vTbY3WKUAN6fa+7p1t+1Yl6hFxKeMLfR6kk=

  6. 客戶單在發送請求,在Authorization頭字段包括Key identifier(Hawk Auth ID)指定的id,時間戳,以及加密生成的MAC

    GET /resource/1?b=1&a=2 HTTP/1.1
    Host: 127.0.0.1:8000
    Authorization: Hawk id="dh37fgj492je", ts="1353832234", ext="some-app-data", mac="/uYWR6W5vTbY3WKUAN6fa+7p1t+1Yl6hFxKeMLfR6kk="
  7. 服務端收到請求后再次按相同的算法計算出MAC,並驗證Hawk憑證的有效性,如果驗證通過就返回結果

這個認證的方式 npm中有包,里面有案例,可以查看一下hawk

官方詳細文檔

AWS Signature

AWS的使用者可以使用自定義的HTTP方案基於HMAC的加密算法去認證

參考文檔

[http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html](http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
[http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html](http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html)

postman 的基礎使用篇(一)
postman發送請求使用篇(二)
postman響應使用篇(三)
postman的代理使用篇(四)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM