google authenticator驗證教學

google authenticator驗證
可以在各語系下實行,C#,java
最近剛好在使用php,於是便有下列範例供參考





















相信大家玩遊戲為了防止自己辛苦拿到的道具被偷走,
都有用過 google authenticator 來做進一步帳號登入


其中邏輯非常簡單 , 取得 google api return 的 code
用該code與手機上取得的 6位數 字拼出一個結果

可以在google search任一個 git 下載
PHPGangsta/GoogleAuthenticator 其實裡面有一個 example code寫的很清楚
這裡底下看到是我重新改過符合現實的狀況


我們準備三支 php 檔案

//input.php
<form method="post" action="verif.php"> 
   <input type="text" name="inputAuth">
   <input type="submit" name="submit" value="Submit"> 
</form>


//verif.php
<?php

require_once '../PHPGangsta/GoogleAuthenticator.php';

$ga = new PHPGangsta_GoogleAuthenticator();

$checkResult = $ga->verifyCode("K12QLNQAICOTOP6C", $_REQUEST['inputAuth'], 1);// 2 = 2*30sec clock tolerance    
if ($checkResult) {
    echo 'OK';
} else {
    echo 'FAILED';
}


//getAuth
<?php

require_once '../PHPGangsta/GoogleAuthenticator.php';

$ga = new PHPGangsta_GoogleAuthenticator();

$secret = $ga->createSecret();
echo "Secret is: ".$secret."\n\n<br>";
//得出key(手動輸入)

$qrCodeUrl = $ga->getQRCodeGoogleUrl('Blog', $secret);
echo "Google Charts URL for the QR-Code: ".$qrCodeUrl."\n\n<br>";
//得出QrCode(手動輸入)
?>
這邊透過google api 可以產出 key , 跟 QrCode , 都可以在手機app設定上輸入
當然QrCode輕鬆多了不用輸入Key

每一次從手機上得到的 6位數字 與 api 產生的 key K12QLNQAICOTOP6C可以得出一個參數便是結果囉




沒有留言:

張貼留言