登錄的雙因素認證-Golang實現

需求

實現登錄雙因素認證

開源庫使用

框架:github.com/gin-gonic/gin
驗證碼:github.com/dchest/captcha
session管理:github.com/gorilla/sessions + github.com/boj/redistore
OTP:github.com/xlzd/gotp + privacyidea
郵件發送:gopkg.in/gomail.v2

關鍵點

  • 驗證碼默認存儲在內存中,怎麼多實例共享?
    重寫dchest/captcha的Store接口,使用redis存儲驗證碼。
  • 用戶驗證完賬號密碼,如何記錄用戶的這一狀態?
    用戶驗證通過後,生成臨時session保存到redis中,默認5min,用戶驗證OTP的時候驗證cookie中是否存在該session,存在則驗證合法性(獲取redis中存儲的數據,存儲了auth=pwd則視爲通過了賬號密碼驗證),之後再校驗OTP。OTP Token在privacyidea中生成,也可自己隨機生成,TOTP算法驗證是否通過OTP驗證。用戶線下使用谷歌令牌或者身份寶等軟件掃碼即可。用戶驗證OTP通過後生成新的session,有效期一天。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章