Python項目整合PyOTP+Google Authenticator
PyOTP主要是用來生成與驗證一次性密碼(OTP, One-Time Password)的Python庫,下麵是官方介紹
PyOTP is a Python library for generating and verifying one-time passwords. It can be used to implement two-factor (2FA) or multi-factor (MFA) authentication methods in web applications and in other systems that require users to log in.
首先需要安裝PyOTP
pip install pyotp
# 這裏安裝的版本是2.3.0
PyOTP提供2種One-Time Password可以使用:
- HOTP(HMAC-Based One-Time Password)
- TOTP(Time-Based One-Time Password)
HOTP
基於HMAC的一次性密碼,所謂一次性,自然是生成一個驗證碼這個驗證碼隻能用一次啦,下麵來看看示例
import pyotp
# pyotp提供了一個輔助函數隨機生成一個16個字符的base32密鑰
# SECRET_KEY = pyotp.random_base32() # => JTWXYIZEIMMFF4IM
SECRET_KEY = 'base32secret3232' # 方便測試我這裏使用固定的密鑰
# 創建hotp對象
hotp = pyotp.HOTP(SECRET_KEY)
# 生成三個驗證碼
hotp.at(0) # =>驗證碼:260182
hotp.at(1) # =>驗證碼:055283
hotp.at(1401) # =>驗證碼:316439
# 服務上麵驗證
hotp = pyotp.HOTP(SECRET_KEY) # SECRET_KEY是共享密鑰
hotp.verify('316439', 1401) # 驗證通過True
hotp.verify('316439', 1402) # 驗證失敗False
TOTP
基於時間的一次性密碼,比如我們本文中使用到的Google Authenticator
,每次生成的驗證碼有效期就隻有30秒,30秒之後就過期無法使用,下麵來看看示例
import time
import pyotp
SECRET_KEY = 'base32secret3232'
# 生成TOTP對象
totp = pyotp.TOTP('base32secret3232')
# 獲取驗證碼
totp.now() # => '492039'
# OTP verified for current time
totp.verify('492039') # => True
time.sleep(30)
totp.verify('492039') # => False,因超過30秒被視為驗證未通過
整合Google Authenticator
PyOTP
提供生成Google Authenticator URI
功能,讓我們更輕鬆的整和Google Authenticator
import pyotp
SECRET_KEY = 'base32secret3232'
# 創建TOTP對象
totp = pyotp.totp.TOTP(SECRET_KEY)
# 生成QrCode鏈接,你需要將以下內容生成一個二維碼,然後使用Google Authenticator App進行綁定
qr_code_text = totp.provisioning_uri(name='alice@google.com', issuer_name='Secure App')
# qr_code_text = otpauth://totp/Secure%20App:alice%40google.com?secret=base32secret3232&issuer=Secure%20App
# 驗證
totp.verify('047374') # => True
推薦兩個插件,一個是Chorme版本的Google Authenticator,另外一個是根據文本生成二維碼.
相關說明:
1、VIP會員無限製任意下載,免積分。立即前往開通>>
2、下載積分可通過日常 簽到、綁定郵箱 以及 積分兌換 等途徑獲得!
3、本站資源大多存儲在雲盤,如出現鏈接失效請評論反饋,如有密碼,均為:www.ipipn.com。
4、所有站內資源僅供學習交流使用。未經原版權作者許可,禁止用於任何商業環境,否則後果自負。為尊重作者版權,請購買正版作品。
5、站內資源來源於網絡公開發表文件或網友分享,如侵犯您的權益,請聯係管理員處理。
6、本站提供的源碼、模板、軟件工具等其他資源,都不包含技術服務,請大家諒解!
7、源碼、模板等資源會隨著技術、壞境的升級而存在部分問題,還請慎重選擇。
PS.源碼均收集自網絡,如有侵犯閣下權益,請發信件至: admin@ipipn.com .
源站網 » Python項目整合PyOTP+Google Authenticator