利用python-hashlib 做介面驗證token

highhand發表於2021-09-09

昨天在群裡有同學文件,如果對外一個介面,有什麼好的方案做驗證嗎?我當時給出了傳入一個token到headers裡,然後,在服務端獲取這個token解析,驗證合法性。那麼我今天針對這個方案,給出一個小的demo,以供同學參考:

首先我們的方案是:利用 一個 簽名 + 一個時間戳 生成一個md5 加密的token,並將這個token與時間戳一起放到headers中進行http請求,方法如下,我們先上圖,然後進行解釋:

圖片描述

好,我們開始逐行解釋,首先匯入3個包,time生成時間戳,hashlib進行加密,requests做http請求使用,

接下來 我們來定義一個內部統一的secret key 並 獲得當前的時間戳 timestamp,並將他們拼在一起生成strdata,

然後我們建立token物件,這裡我們選擇md5的加密方式,也可以使用sha的加密(越高越難破解)

最後我們將token和timestamp放入headers並且透過requests傳到介面,客戶端的工作就完成了。那麼我們看看介面端幹了什麼,一樣先看圖,後解釋(請無視我的紅色錯誤提示,我這裡模擬的一個語法場景進行的虛擬碼):

圖片描述

好,我們以這個虛擬碼為例,他是一箇中介軟體業務,對於每個介面都會先走這個中介軟體函式,如果驗證失敗,會直接返回,驗證透過,則走完中介軟體函式,直接繼續執行,其實也可以理解為攔截器。

好,我們在中介軟體裡,獲取headers中的token和timestamp,如果有任一不存在都驗證失敗,返回false,之後要做的就是在伺服器端使用和客戶端達成一致的secret和傳過來的timestamp生成伺服器端的validtoken,並與客戶端傳過來的token進行對比,如果不一致,返回false。到這裡就驗證完成了。中介軟體不再攔截,進行介面操作~


總結:驗證方式有太多種,有的是從客戶端加密,服務端解密,也有我這種雙方生成相同token驗證的,傳輸方式不同的。這裡給大家舉一個例子,給大家一個參考

················

歡迎關注課程:

  


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/810/viewspace-2824264/,如需轉載,請註明出處,否則將追究法律責任。

相關文章