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

發表評論

讚助本站發展 維持服務器消耗

全站源碼免費下載 立刻讚助