
# n8n Auth0 JWT令牌验证工作流
## 工作流概述
这个n8n模板展示了如何使用两种不同的方法来验证带有Auth0授权令牌的API请求。由于Auth0令牌使用RS256算法,而n8n的标准JWT认证选项无法直接处理,因此需要通过代码节点来实现令牌验证。
## 🚀 功能说明
### 主要功能
– **JWT令牌验证**:验证Auth0颁发的JWT令牌的有效性
– **双重验证方法**:支持通过JWKS URI和签名证书两种方式进行验证
– **错误处理**:无效令牌返回401 Unauthorized响应
– **成功处理**:有效令牌继续处理请求并附加解码后的payload
## 🛠️ 技术实现
### 方法一:使用JWK-RSA验证
– **节点配置**:Using JWK-RSA代码节点
– **验证原理**:通过Auth0提供的JWKS URI获取公钥进行验证
– **依赖要求**:需要安装`jwk-rsa` npm包
– **配置参数**:JWKS URI、Issuer、Audience
### 方法二:使用公共证书验证
– **节点配置**:Using Public Cert代码节点
– **验证原理**:使用应用程序的签名证书直接验证令牌
– **证书获取**:从Auth0应用设置中的证书部分获取
– **配置参数**:签名证书、Issuer、Audience
## 🔧 工作流节点组成
### 核心节点
– **Webhook节点**:接收API请求
– **代码节点(Using JWK-RSA)**:通过JWKS URI验证JWT
– **代码节点(Using Public Cert)**:通过签名证书验证JWT
– **Respond to Webhook节点**:返回401 Unauthorized或200 OK响应
– **No Operation节点**:继续处理已验证的请求
### 辅助节点
– **Sticky Note节点**:提供详细的使用说明和配置指导
## 📋 完整节点列表
Webhook, Code, Respond to Webhook, No Operation, Sticky Note
## ⚠️ 重要注意事项
### 环境要求
– **仅限自托管n8n**:此模板需要安装第三方依赖
– **npm包安装**:需要安装`jwk-rsa`包
– **环境变量设置**:需要设置`NODE_FUNCTION_ALLOW_EXTERNAL=*`
### 配置说明
– **Auth0应用配置**:需要配置正确的JWKS URI或签名证书
– **令牌验证参数**:需要设置正确的Audience和Issuer
– **错误处理**:无效令牌会自动返回401响应
## 🔄 工作流程
1. **接收请求**:Webhook节点接收带有Authorization头的API请求
2. **令牌提取**:代码节点从Authorization头中提取JWT令牌
3. **令牌验证**:
– 方法一:通过JWKS URI获取公钥验证
– 方法二:使用签名证书直接验证
4. **结果处理**:
– 验证成功:继续处理请求,附加解码payload
– 验证失败:返回401 Unauthorized响应
## 🎯 应用场景
– **API安全认证**:保护n8n webhook端点
– **微服务认证**:在多服务架构中验证Auth0令牌
– **第三方集成**:与使用Auth0认证的外部服务集成
## 📝 配置步骤
### JWKS方法配置
1. 安装`jwk-rsa`包:`npm i -g jwk-rsa`
2. 设置环境变量:`NODE_FUNCTION_ALLOW_EXTERNAL=*`
3. 修改代码节点中的Auth0配置参数
4. 获取JWKS URI:应用设置 > 高级设置 > 端点
### 证书方法配置
1. 设置环境变量:`NODE_FUNCTION_ALLOW_EXTERNAL=*`
2. 修改代码节点中的Auth0配置参数
3. 获取签名证书:应用设置 > 高级设置 > 证书
## 💡 技术亮点
– **灵活的验证方式**:支持两种主流验证方法
– **完善的错误处理**:自动处理验证失败情况
– **详细的文档说明**:包含完整的配置指导
– **模块化设计**:易于理解和定制

评论(0)