Python 使用 PyOTP 实现二步验证
二步驗證
之前為服務器安裝配置了 PVE 虛擬機系統,由于經常需要遠程登陸以及通過 Web 進行管理,所以需要進一步提高安全性。PVE 提供了二步驗證的功能,結合手機上的 FreeOTP 軟件可以實現賬號密碼+驗證碼的登陸操作。
于是,就產生了一個想要給其他的一些對安全性有一定要求的應用也添加二步驗證的功能。
下文主要簡單介紹如何使用 python 的 pyotp 庫來實現一個簡單的二步登陸驗證功能的DEMO。
安裝依賴庫
我們需要安裝 pyotp 以及 qrcode 兩個 python 庫來實現功能,安裝可以使用 pip install 的方法安裝,比較簡單。
pip install pyotp
pip install qrcode
生成密鑰
第一步,我們需要先生成一個密鑰,pyotp 提供了 random_base32() 方法可以簡單的生成密鑰。
import pyotp
sec = pyotp.random_base32()
創建一個 Time-Based 的 OTPS
接下來,我們用上面生成的密鑰創建一個 Time-Based 的 OTPS 對象。
topt = pyotp.TOTP(sec)
生成二維碼
接下來,我們需要生成一個二維碼,供我們的手機端應用 FreeOTP 掃描綁定,為了方便生成和顯示二維碼,我們需要用到 qrcode 庫。
import qrcode
# 獲取二維碼 URI
qr_uri = pyotp.totp.TOTP(sec).provisioning_uri('test')
# 生成二維碼
img = qrcode.make(qr_uri)
img.get_image().show() # 顯示二維碼
FreeOTP 掃描二維碼綁定
這里將使用 iOS 系統下的 FreeOTP 軟件進行綁定操作。其他軟件可以根據說明文檔相應操作。
打開FreeOTP后,點擊右上角的二維碼圖標,掃描上一步生成的二維碼即可。
驗證
在手機上的 503807 ,我們在代碼中使用 verify() 驗證是否一致。
totp.verify(503807)
> True
可以看到,我們在代碼中的驗證是通過的。
參考資料
pyotp
qrcode
總結
以上是生活随笔為你收集整理的Python 使用 PyOTP 实现二步验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在一个小写英文字母(a-z)组成的字符串
- 下一篇: 给出一个正整数 nnn,请你计算从 11