[C#] 簡單使用 基於時間的一次性密碼算法(TOTP)
2021-03-04
之前有寫過一篇文章講過 Google Authenticator ,最近因為要用到,那時候只是快速結案分享,這次稍微研究一下,發現其實這是公共規則叫做 TOTP ( Time-based One-Time Password ) ,而且是有規範的 https://tools.ietf.org/html/rfc6238
這邊我要用的套件是 AspNetCore.Totp , https://github.com/damirkusar/AspNetCore.Totp ,Nuget 位置 : https://www.nuget.org/packages/AspNetCore.Totp/
1. 安裝 AspNetCore.Totp ,因為我是用 .net core 3.1 寫的,所以直接用這一套。
2. 產生 QR Code ,我的密鑰是用 “123456” ,圖片大小是 300,他出來的是 base64 ,直接帶入 img src 即可
這 QR Code 你可以使用 Google Authenticator , 或是 Microsoft Authenticator 加入都可以。
3. 產生現在的 TOTP
4. 透過產生現在的 TOTP 你可以驗證客戶輸入的跟現在的是不是一樣,但是我們得容錯,容錯上一次的,所以這邊我讓他也產生上次的 TOTP ,這樣等於是可以容錯一分鐘內的輸入錯誤,畢竟有時候一進去他剛看完就馬上換,這樣就顯得很難用,好啦這是客戶要求的拉,我就是順便紀錄一下..
大概寫到這裡,紀錄一下,希望有幫助到需要的人..