使用自定义 Python 代码校验 TOTP 令牌 - n8n 工作流

在你的n8n工作流中,直接使用自定义 Python 代码验证基于时间的一次性密码 (TOTP) 密钥。使用此多功能的n8n模板集成安全的双因素认证 (2FA) 逻辑。

工作流预览

准备好自动化了吗?

下载此 n8n 工作流模板并立即开始使用。

n8n 工作流所用节点

适用人群


  • 安全工程师:实现自定义双因素认证 (2FA) 机制。

  • 后端开发人员:使用n8n将安全的认证步骤直接集成到后端 API 调用中。

  • 自动化专家:需要一个独立的 TOTP 验证解决方案,不依赖外部的n8n凭证或专用服务。

  • 任何希望查看使用 Code n8n 节点进行加密操作的高级示例的用户。

概览

这个专用的n8n模板提供了一种非常灵活的方式来校验基于时间的一次性密码 (TOTP) 码。与可能需要配置特定n8n凭证的标准方法不同,此n8n工作流采用强大且独立的 Python 脚本来处理整个验证流程——从 base32 解码到 HMAC-SHA1 生成。

此n8n工作流的核心价值在于它的独立性。它允许你动态地获取用户的 TOTP 密钥(例如从数据库中),并立即将用户提供的代码与当前时间间隔进行核对。这对于构建自定义登录或安全操作验证流程至关重要,为你的整体n8n自动化提供了一个强大的核心逻辑流控制。

工作原理

此自动化由 Manual Trigger(手动触发)n8n 节点启动,通常用于测试或作为子工作流执行时。


  1. 启动和初始化(点击‘测试工作流’时):流程开始,在生产环境中,这个初始的n8n触发器通常会被替换为生产环境的 Webhook 或数据库查询。

  2. 定义示例输入(EXAMPLE FIELDS):标记为 'EXAMPLE FIELDS' 的n8n节点设置了两个关键输入:totpsecretexample(用户的 Base32 密钥)和 codetoverify_example(用户提供的 6 位数代码)。

  3. 执行验证逻辑(TOTP VALIDATION):n8n工作流的核心位于这个 Code n8n 节点中。它执行一个全面的 Python 脚本,导入必要的加密库 (hmac, hashlib)。脚本会解码 Base32 密钥,计算当前时间步长计数器,使用 HMAC-SHA1 生成预期的 TOTP 码,并与输入代码进行比对。它返回 1(有效)或 0(无效)的状态。

  4. 条件路由(IF CODE IS VALID):流程使用一个 IF n8n 节点来检查输出状态。如果状态是 1,n8n工作流将沿着 'true' 分支继续处理成功认证;如果是 0,则沿着 'false' 分支继续,以便进行自定义错误处理或拒绝凭证。

安装指南

要部署此n8n工作流,请遵循以下步骤:


  1. 导入:复制提供的 JSON 数据,并使用 'New' 菜单 > 'Import from JSON'(从JSON导入)直接粘贴到你的n8n实例中。

  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. 测试:设置好示例数据后,使用 'Test workflow'(测试工作流)按钮,确保自定义 Python 逻辑能在你的n8n环境中正确运行。

节点详情

点击‘测试工作流’时(Manual Trigger n8n 节点):作为测试的起点。在实时系统中,此n8n触发器将被替换为生产环境的触发器。
EXAMPLE FIELDS(Set n8n 节点):一个仅用于测试的工具节点。它向n8n工作流结构中注入样本数据(一个 totpsecretexample 和一个 codetoverifyexample),用于验证前置准备。
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 节点
更新时间: 2025年12月26日
创建者
Bazhard
Bazhard

精选*