什么是雙重認證(2 Factors Authentication)♦☜☞☝✍☚☛☟✌✽✾✿❁❃?如何在Drupal中使用ⓣⓤⓥⓦⓧⓨⓩ?
雙重認證㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,或者叫多重認證☧☬☸✡♁✙♆。,、':∶;,英文是 Two Factor Authenticationⓚⓛⓜⓝⓞⓟⓠⓡⓢ,簡寫為 2FAⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,是目前比較流行的認證方式ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,越來越多的服務商需要支持雙重認證♦☜☞☝✍☚☛☟✌✽✾✿❁❃,就是通常我們遇到的短信認證☾☽❄☃、人臉識別等ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。本文就簡單介紹一些什么是雙重認證㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,以及如何在Drupal/CMS中使用雙重認證☾☽❄☃。

什么是雙重認證(2FA)✵✶✷✸✹✺✻✼❄❅?
雙重身份驗證 (2FA) 是一種安全流程ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,可以提高一個人身份的真實性ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ。該流程會請求用戶在訪問應用程序或系統之前提供兩個不同的認證因素ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,而不是簡單地提供他們的用戶名和密碼☧☬☸✡♁✙♆。,、':∶;。
雙重認證流程:
- 第 1 步: 用戶登錄應用程序或網站☾☽❄☃。
- 第 2 步: 用戶輸入登錄憑證✵✶✷✸✹✺✻✼❄❅,通常是賬號和密碼☾☽❄☃,做初始身份驗證✵✶✷✸✹✺✻✼❄❅。
- 第 3 步: 驗證成功㈠㈡㈢㈣㈤㈥㈦,然后將提示用戶提交第二個身份驗證因素♀☿☼☀☁☂☄。
該因素通常是持有因素☾☽❄☃,也就是僅他們擁有的事物✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴。例如⒜⒝⒞⒟⒠⒡⒢⒣⒤,應用程序或網站將向用戶的移動設備發送唯一的代碼❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣。 - 第 4 步: 用戶將代碼輸入至應用程序或網站❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,如果代碼通過㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,用戶將通過身份驗證并被授予系統訪問權限✵✶✷✸✹✺✻✼❄❅。
這就是2FA的全過程㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,其中3/4步就是第二次驗證ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,二次認證的方式也有很多㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,下面就是常見的幾種ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。
二次認證的方式:
- 硬件令牌:就是通過硬件生成一個token⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,二次登錄使用這個token認證♦☜☞☝✍☚☛☟✌✽✾✿❁❃。
- 軟件令牌:就是通過一個app或者軟件ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,生成一個token✺ϟ☇♤♧♡♢♠♣♥,二次登錄使用這個token認證ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。
比如Google Authenticator就是提供這樣服務的軟件⑰⑱⑲⑳⓪⓿❶❷❸❹❺。 - 短信(SMS)/ 郵件 (Email):發送短信驗證碼認證♀☿☼☀☁☂☄,國內比較常見⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓。
- 其他:比如微信掃碼ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ、人臉識別等等⑰⑱⑲⑳⓪⓿❶❷❸❹❺。
如何實現 2FA
一般我們實現 Two Factor Authentication 需要做如下操作⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,
1. 修改原有的登錄業務邏輯
2. 提供新的登錄界面❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,替換原有的登錄界面
3. 能夠生成token以及驗證token
比較知名的2FA提供者有Google的Google Authenticator以及亞馬遜的IAM服務✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴。
CMS 系統 Drupal 里面的 2FA
我們以開源的CMS Drupal為例웃유ღ♋♂,來操作一遍雙重認證的流程和實現過程⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。首先Drupal有很多開源模塊❻❼❽❾❿⓫⓬⓭⓮⓯⓰,我們挑選了幾個關鍵的實現2FA的模塊如下:
- Two-factor Authentication (TFA) - 主功能
- Key - 用于管理Key
- Encrypt - 給其他模塊提供加密服務
- Real AES - 實現一種具體的加密服務㈠㈡㈢㈣㈤㈥㈦,對于Encrypt模塊的擴展
- GA_login - 集成了 Google Authenticator 雙重認證的模塊⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾。
1. 安裝 TFA 模塊

2. 啟用 TFA 模塊
TFA模塊的流程如下:
- 驗證用戶的賬號和密碼
- 如果賬密正確⒜⒝⒞⒟⒠⒡⒢⒣⒤,創建登錄用戶的Session⑰⑱⑲⑳⓪⓿❶❷❸❹❺。
- TFA 模塊實現了 hook_user_login
- TFA 通過登錄的 hook웃유ღ♋♂,檢查是否需要二次認證⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,如果需要ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,調用對應二次驗證的具體方式
- 進行二次認證①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,比如發短信驗證碼等⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓。
- 檢查code是否正確⒜⒝⒞⒟⒠⒡⒢⒣⒤,如果正確登錄完成
3. TFA 模塊配置
配置秘鑰 /admin/config/system/keys/add

配置加密方式 /admin/config/system/encryption/profiles

啟用TFA /admin/config/people/tfa

權限設置(給某些賬號設置2FA的驗證)

配置完成之后⑰⑱⑲⑳⓪⓿❶❷❸❹❺,就可以通過手機下載Google Authenticator軟件❻❼❽❾❿⓫⓬⓭⓮⓯⓰,來登錄實現2FA了⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。

通過上面的步驟ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,我們就實現了整個雙重認證的流程♦☜☞☝✍☚☛☟✌✽✾✿❁❃。
當然Drupal也有一些其他模塊可以實現TFAⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,比如 TFA Email module 也比較簡單㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,通過Email的TFA來發送code驗證㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。
相關的模塊地址❣❦❧♡۵,可以參考Drupal官網以及模塊的文檔⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾。
https://www.drupal.org/project/tfa
創作不易❣❦❧♡۵,轉載請注明出處ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ!
更多Drupal以及內容管理系統✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,請參考我們其他相關文章⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,
1웃유ღ♋♂、Headless CMS:以API為輸出的內容系統的構建
2ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ、內容管理平臺是選擇傳統的 CMS 還是 Headless CMSⓚⓛⓜⓝⓞⓟⓠⓡⓢ?
3⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ、構建英文網站應該用什么框架⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾?
4❣❦❧♡۵、外貿網站如何通過SEO和內容引流㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂?
5♦☜☞☝✍☚☛☟✌✽✾✿❁❃、在線展覽和多媒體展示建設方案
6✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴、WebVR哪個框架好♀☿☼☀☁☂☄?WebVR開發框架的技術選型ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,360VR技術框架♀☿☼☀☁☂☄。
7⒜⒝⒞⒟⒠⒡⒢⒣⒤、使用Phaser構建2D的在線展覽系統
8☾☽❄☃、常見的CMS平臺比較