カスタムPythonコードによるTOTPトークン検証 - n8n ワークフロー

n8nワークフロー内で、カスタムPythonコードを使用して時間ベースワンタイムパスワード(TOTP)シークレットを直接検証します。この多機能なn8nテンプレートで、安全な2FAロジックを統合します。

ワークフロープレビュー

自動化の準備はいいですか?

このn8nワークフローテンプレートをダウンロードして、今すぐ使い始めましょう。

使用されているn8nノード

こんな方におすすめ


  • セキュリティエンジニア: カスタムの二要素認証(2FA)メカニズムを実装する方。

  • バックエンド開発者: n8nを使用して、安全な認証ステップをバックエンドAPI呼び出しに直接統合する方。

  • オートメーションスペシャリスト: 外部のn8n認証情報や専用サービスに依存せず、自己完結型のTOTP検証ソリューションを必要とするユーザー。

  • すべての方が暗号化操作のためにCode n8nノードの高度な使用例を探している場合。

概要

この専門的なn8nテンプレートは、時間ベースワンタイムパスワード(TOTP)コードを検証するための非常に柔軟な手法を提供します。
特定のn8n認証情報の設定を必要とする可能性のある標準的な手法とは異なり、このn8nワークフローは堅牢で自己完結型のPythonスクリプトを使用して、Base32デコードからHMAC-SHA1生成までの検証プロセス全体を処理します。

このn8nワークフローの主な価値はその独立性にあります。ユーザーのTOTPシークレット(例:データベースから)を動的に取得し、ユーザーが提供したコードと現在の時間間隔と即座に照合できます。これは、カスタムサインインフローや安全なアクション検証フローを構築するために不可欠であり、n8nオートメーション全体内で強力なコアロジックフロー制御を提供します。

仕組み

このオートメーションは、通常テスト用、またはサブワークフローとして実行される際に使用されるManual Trigger n8nノードによって開始されます。


  1. 開始と初期化(「ワークフローをテスト」をクリックしたとき): フローが開始されます。本番環境では、この初期n8nトリガーはWebフックやデータベースクエリに置き換えられることがよくあります。

  2. 入力例の定義(EXAMPLE FIELDS): 「EXAMPLE FIELDS」とラベル付けされたn8nノードは、2つの重要な入力、つまりtotpsecretexample(ユーザーのBase32シークレットキー)とcodetoverify_example(ユーザーが提供した6桁のコード)を設定します。

  3. 検証ロジックの実行(TOTP VALIDATION): n8nワークフローの核となるのは、このCode n8nノードです。ここでは、必要な暗号ライブラリ(hmac、hashlib)をインポートする包括的なPythonスクリプトが実行されます。スクリプトはBase32シークレットをデコードし、現在の時間間隔カウンターを計算し、HMAC-SHA1を使用して期待されるTOTPコードを生成し、入力コードと比較します。結果として、ステータス1(有効)または0(無効)を返します。

  4. 条件分岐(IF CODE IS VALID): フローはIF n8nノードを使用して出力ステータスを確認します。ステータスが1の場合、認証成功のため「true」ブランチに進みます。ステータスが0の場合は「false」ブランチに進み、カスタムエラー処理や認証情報拒否が可能になります。

インストールガイド

このn8nワークフローをデプロイするには、次の手順に従ってください。


  1. インポート: 提供されたJSONデータをコピーし、n8nインスタンスの「新規」メニュー > 「JSONからインポート」を使用して直接貼り付けます。

  2. トリガーの設定: 最初のn8nトリガーは「Manual Trigger」に設定されています。本番環境で使用する場合は、希望のトリガー(例:Webhook、API呼び出し、データベースクエリ)に置き換えてください。

  3. データ入力のカスタマイズ: 「TOTP VALIDATION」Code n8nノードを見つけます。

Pythonコードの39行目と40行目を確認します。
現在、これらは「EXAMPLE FIELDS」ノードの出力(input.item.json.totpsecret_example)を参照しています。
* 重要ステップ: これらの行を修正し、実際のデータソースからシークレットとコードを取得するように変更します(例:Webhookノードが前にある場合、$json.body.secretや$json.body.codeを参照する可能性があります)。

  1. テスト: サンプルデータを設定した後、「ワークフローをテスト」ボタンを使用して、カスタムPythonロジックがn8n環境内で正しく動作することを確認します。

ノード詳細

「ワークフローをテスト」をクリックしたとき(Manual Trigger n8nノード): このn8nテンプレートのテスト開始点として機能します。ライブシステムでは、このn8nトリガーは本番トリガーに置き換えられます。
EXAMPLE FIELDS (Set n8nノード): テスト専用のユーティリティノードです。検証前にサンプルデータ(totpsecretexampleとcodetoverifyexample)をn8nワークフロー構造に注入します。
TOTP VALIDATION (Code n8nノード): 機能の中核です。このn8nノードには、TOTPのRFC 6238標準を実装したPythonスクリプトが含まれています。主要な設定には、言語をPythonに設定することや、計算されたトークンを入力コードと比較するためのverifytotp関数の定義が含まれます。
IF CODE IS VALID (IF n8nノード): 中核となるロジックフロー制御n8nノードです。先行するCode n8nノードからの出力ステータス($json.status)を確認します。ステータスが1と等しい場合、検証は成功し、それに応じてn8nワークフローが誘導されます。

関連するn8nワークフロー

無料

ノード: 5 ノード
更新済み: 12月 26 2025
すべて表示
作成者
Bazhard
Bazhard

特徴*