Google Authenticator用のQRコードを生成するツールをJavaScriptとGoogle Chart APIで作ってみた。
ツール
issuer | |
username | |
secret |
結果
ソースコード
<table>
<tr>
<td>issuer</td>
<td><input type="text" id="issuer" placeholder="〇〇システム用"/></td>
</tr>
<tr>
<td>username</td>
<td><input type="text" id="username" placeholder="user000001"/></td>
</tr>
<tr>
<td>secret</td>
<td><input type="password" id="secret" placeholder="ABCDEF0123456789ABCDEF0123456789"/></td>
</tr>
</table>
<input type="button" value="QRコード生成" onclick="generateQR()"/>
<div style="background-color: aliceblue; padding: 5px">
結果
<ul>
<li id="issuer_v"></li>
<li id="username_v"></li>
<li id="secret_v"></li>
</ul>
<img id="qrcode" width="180" height="180"/>
</div>
<script>
function generateQR() {
const issuer = document.querySelector('#issuer').value;
const username = document.querySelector('#username').value;
const secret = document.querySelector('#secret').value;
document.querySelector("#issuer_v").innerHTML = "issuer: " + issuer;
document.querySelector("#username_v").innerHTML = "username: " + username;
document.querySelector("#secret_v").innerHTML = "secret: (秘密の" + secret.length + "文字)";
const otpURI = "otpauth://totp/" + encodeURIComponent(username) + "/?" +
"issuer=" + encodeURIComponent(issuer) + "&" +
"secret=" + encodeURIComponent(secret) + "&" +
"digits=6&period=30&algorithm=SHA1".replaceAll('+', );
const imageURL = "https://chart.googleapis.com/chart?" +
"cht=qr&chs=180x180&chld=L|0&chl=" + encodeURIComponent(otpURI);
document.querySelector('#qrcode').setAttribute("src", imageURL);
}
</script>
【参考サイト】
| 株式会社セシオス
ワンタイムパスワードの生成 JSRSASIGNライブラリを利用してjavascriptで Google Aut

TOTP 認証を提供する際に考慮すべき otpauth URI のフォーマット | Tricorn Tech Labs
開発グループの卯月です。 最近(といっても半年程前ですが)、私が担当しているプロダクトに TOTP (RFC 6238) で2要素認証を導入しました。 TOTP を扱うライブラリや...