1. 開啟專案 , 然後去 Nuget 下載 一套叫做 Google.Authenticator 的套件
image.png2. 首先,你得產生一組給每一個客戶的 AccountSecretKey 並且保密這個Key 這邊範例我是隨便取一個GUID 並且只取10碼來當作 sample ,避免每次更新我用 static 暫時保存著
private static string AccountSecretKey { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
//建立一把用戶的私鑰
if (string.IsNullOrEmpty(AccountSecretKey)) {
AccountSecretKey = Guid.NewGuid().ToString("N").Substring(0, 10);
}
ltlAccountSecretKey.Text = AccountSecretKey;
3. 產生 QR Code , 在產生 QR Code 前,你需要得到該用戶的 ManualEntryKey 只要透過 該library TwoFactorAuthenticator.GenerateSetupCode 即可
//產生QR Code.
var tfa = new TwoFactorAuthenticator();
var setupInfo = tfa.GenerateSetupCode("DONMA BLOG", AccountSecretKey, 300, 300);
//用內建的API 產生
ltlQRCode.Text = "<img src='" + setupInfo.QrCodeSetupImageUrl + "' />";
結果:
image.png
4. QR Code 內容 :
ltlQRCodeContent.Text = setupInfo.ManualEntryKey+ "&issuer="+ "DONMA BLOG";
6. 驗證用戶輸入:
protected void btnValid_Click(object sender, EventArgs e)
{
TwoFactorAuthenticator tfa = new TwoFactorAuthenticator();
//第一個參數是你當初產生QRcode 所產生的Secret code
//第二個參數是用戶輸入的純數字Code
var result = tfa.ValidateTwoFactorPIN(AccountSecretKey, txtUserType.Text);
ltlResult.Text = result ? "SUCCESS!!" : "FAIL!!";
}
很簡單吧 :)