
## 工作流概述
这个n8n工作流演示了通过API密钥保护webhook的基本模式。它作为一个门卫,在允许请求继续之前检查请求头中的有效API密钥。
## 工作原理
### 1. 接收请求
– **Secured Webhook节点**:接收传入的POST请求,期望在x-api-key头中发送API密钥
### 2. API密钥验证
– **Check API Key节点**:从传入请求的头部获取密钥
– 向第二个webhook(Get API Key)发出内部HTTP请求,该webhook充当模拟数据库
– 第二个webhook检索已注册API密钥列表(来自Registered API Keys节点)并过滤以查找与提供的密钥匹配的密钥
### 3. 条件响应
– **API Key Identified节点**:如果找到匹配项,将执行路由到”success”路径,返回200 OK响应和已识别用户的ID
– 如果未找到匹配项,则路由到”unauthorized”路径,返回401 Unauthorized错误
## 设置步骤
### 设置时间:约2分钟
1. **设置凭据**:
– 此工作流对其内部通信使用”Header Auth”
– 转到凭据并创建新的Header Auth凭据
– 可以使用任何名称和值(例如,名称:X-N8N-Auth,值:my-secret-password)
– 在所有四个webhook/HTTP Request节点中选择此凭据
2. **添加您的API密钥**:
– 打开Registered API Keys节点,这是您的模拟数据库
– 编辑数组以包含要授权的user_id和api_key对
3. **激活工作流**
4. **测试**:
– 使用Test Secure Webhook节点发送请求
– 使用列表中的有效密钥尝试查看成功响应
– 将x-api-key头更改为无效密钥以查看401 Unauthorized错误
## 生产环境部署
将工作流的模拟数据库部分(Get API Key webhook和Registered API Keys节点)替换为真实的数据库节点,如Supabase、Postgres或Baserow来查找密钥。
## 安全优势
这种模式将面向公众的端点与数据源分离,这是一个良好的安全实践。通过内部验证机制,确保只有授权的API密钥才能访问受保护的资源。

评论(0)