2FA 雙重驗證 URL格式
2FA URL 格式如下方。透由 Scheme、Type、Label、Parameters 組成。
1 | otpauth://TYPE/LABEL?PARAMETERS |
一、Scheme
otpauth 期初由Google提出,用於將帳號與雙重驗證綁定,大多驗證格式都會用optauth,例如Google、Microsoft 等等。
二、Type
Type 代表驗證類型,目前有兩種驗證類型,分別為 HOTP 與 TOTP。
HOTP
HOTP 是基於 HMAC-based One-Time Password Algorithm,是一種基於 HMAC 的一次性密碼演算法,主要是透過一個密鑰與計數器產生一個一次性密碼,並且透過驗證計數器是否一致來驗證是否正確。
參考文件 -> 基於雜湊訊息驗證碼的一次性密碼演算法
TOTP
TOTP 是基於 Time-based One-Time Password Algorithm,是一種基於時間的一次性密碼演算法,主要是透過一個密鑰與時間產生一個一次性密碼,並且透過驗證時間是否一致來驗證是否正確。
參考文件 -> 基於時間的一次性密碼演算法
三、Label
Label 代表帳號,通常是使用者帳號,例如電子郵件、帳號等等。
四、Parameters
Parameters 代表參數,主要是透過參數來設定驗證相關資訊,例如密鑰、驗證次數、驗證時間等等。
1. Secret
Secret 代表密鑰,主要是透過密鑰來產生一次性密碼。
2. Counter
Counter 代表驗證次數,主要是透過驗證次數來產生一次性密碼。
3. Period
Period 代表驗證時間,主要是透過驗證時間來產生一次性密碼。
4. Algorithm
Algorithm 代表演算法,主要是透過演算法來產生一次性密碼,目前有兩種演算法,分別為 SHA1 與 SHA256。
5. Digits
Digits 代表驗證碼位數,主要是透過驗證碼位數來產生一次性密碼,目前有兩種驗證碼位數,分別為 6 位數與 8 位數。
6. Issuer
Issuer 代表發行者,主要是透過發行者來產生一次性密碼。
實作
NuGet 安裝
1 | Install-Package OtpNet |
實作程式碼
1 | using System; |