雙因子認證
TOTP
: Time-Based One-Time Password Algorithm(基于時間的一次性密碼算法)靶病,具體可參考 RFC6238
使用諸如 TOTP 生成的動態(tài)口令可以實現(xiàn)登錄時的二因子認證(密碼+動態(tài)口令) 斗躏,關(guān)于雙因子認證可以參考 這篇文章
本文簡單闡述如何在自己的網(wǎng)站中集成雙因子認證擂涛,服務(wù)端使用 python,客戶端使用 Google Authenticator银择,在各個市場都可下載津坑,無需聯(lián)網(wǎng)即可使用
服務(wù)端
- 安裝
pyotp
,pip install pyotp
- 為每個用戶生成一個 base32 的密鑰
base32secret3232
渗饮,保存在服務(wù)器數(shù)據(jù)庫中 , 代碼為pyotp.random_base32()
- 服務(wù)端在匹配時使用
totp = pyotp.TOTP('base32secret3232')
和
totp.now()
即可獲得當(dāng)前動態(tài)口令
客戶端
客戶端使用 Google Authenticator 掃描二維碼即可錄入信息姻政,二維碼的內(nèi)容可以在服務(wù)器生成 pyotp.totp.TOTP('base32secret3232').provisioning_uri("alice@google.com", issuer_name="Secure App")
-
base32secret3232
為之前生成的 base32 的密鑰 -
alice@google.com
為用戶的用戶名呆抑,可以顯示在客戶端上 -
Secure App
為 APP/網(wǎng)站 的名字
之后 Google Authenticator 會每隔 30s 就更新一次動態(tài)口令,在需要二次認證的時候傳入服務(wù)器做對比汁展。二維碼生成工具有很多鹊碍,比如 qrious 等
參考資料:
打賞碼