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