【Python】2段階認証コード(TOTP)を自作する方法【pyotpライブラリ活用】
「2段階認証って便利だけど、いちいちスマホを取り出すのが面倒くさい…」
そんな風に感じたことはありませんか?
Pythonライブラリpyotp
を使って、スマホを使わずに自分でTOTP認証コードを生成する方法をご紹介します。
🔐 そもそもTOTPって何?
TOTP(Time-based One-Time Password)は、一定時間ごとに変わるワンタイムパスワードのこと。
多くのサービスで使われている2段階認証の仕組みで、Google Authenticatorなどもこの方式です。
仕組みは以下の通りです:
- ユーザーに発行された「シークレットキー」と
- 現在時刻を使って
- 6桁の認証コードを生成
これをサーバーとクライアント(例:認証アプリや自作ツール)が同時に行うことで、時刻同期されたコードをチェックできます。
📦 ライブラリのインストール
まずはTOTPを簡単に扱えるPythonライブラリ pyotp
をインストールします。
|
|
🧪 TOTP認証コードを生成してみよう
以下のPythonコードで、シークレットキーからTOTPコードを生成できます。
|
|
✅ 実行結果(例)
認証コード: 123456
このコードは約30秒ごとに切り替わります。
複数回実行すると、そのたびに異なるコードが得られるはずです。
💡 実際にどんな場面で便利?
- サーバーへのSSHログイン時に2段階認証が必要だけど、スマホを取り出すのが面倒…
- VPN接続や管理画面ログインなど、頻繁にコードを確認するシーン
こうした場面では、このスクリプトを実行するだけで即コード取得できるので、時短&スマート!
⚠️ 注意点:セキュリティ意識は忘れずに!
便利とはいえ、シークレットキーをPC上に平文で保存しておくのはリスクがあります。
次のような対策がオススメです:
.env
ファイルや環境変数に保存してコード内で直接書かない- GitHub等に公開しない(
.gitignore
設定を忘れずに) - ファイルやディレクトリに適切な権限を設定
参考
🧭 まとめ
項目 | 内容 |
---|---|
ライブラリ | pyotp |
入力 | シークレットキー(Base32) |
出力 | 時刻ベースの6桁コード |
実行タイミング | 任意。コードは30秒ごとに変化 |
スマホを取り出す手間を省き、自分のPCで手軽にTOTPコードを生成できるというのはかなり便利な工夫です。
ぜひあなたの開発・運用環境に取り入れてみてください!