
## Auth0 JWT令牌验证n8n工作流
这个n8n模板展示了如何使用代码节点验证API请求中的Auth0授权令牌。
### 为什么需要这个解决方案?
Auth0无法使用标准的JWT认证选项,原因如下:
1. Auth0令牌使用RS256算法
2. n8n中的RS256 JWT凭据要求用户使用私钥和公钥,而不是密钥短语
3. Auth0不提供对Auth0实例私钥的访问权限
解决方案是在webhook接收后使用代码节点处理JWT验证。
### 工作原理
有两种验证Auth0令牌的方法:
#### 方法1:使用JWKS URI验证
– 使用JWK-RSA库验证Auth0托管的应用程序JWKS URI
– 需要安装jwks-rsa依赖包:`npm i -g jwks-rsa`
– 设置环境变量:`NODE_FUNCTION_ALLOW_EXTERNAL=*`
#### 方法2:使用签名证书验证
– 将应用程序的签名证书导入工作流
– 使用证书验证令牌
– 证书可以在Auth0应用设置的高级设置>证书中找到
### 工作流结构
工作流包含两个独立的验证路径:
**JWKS验证路径:**
– Webhook1 → Using JWK-RSA → Continue with Request → 200 OK
– 验证失败时:Using JWK-RSA → 401 Unauthorized
**签名证书验证路径:**
– Webhook → Using Public Cert → Continue with Request1 → 200 OK1
– 验证失败时:Using Public Cert → 401 Unauthorized1
### 技术实现细节
每个代码节点都包含完整的JWT验证逻辑:
– 解析Authorization头中的Bearer令牌
– 使用jsonwebtoken库进行验证
– 配置issuer、audience和algorithms参数
– 验证成功返回解码的payload,失败抛出错误
### 使用说明
1. **环境要求:**
– 自托管的n8n社区版
– 能够安装npm包
– Auth0应用程序和获取JWK URL或签名证书的方法
2. **配置步骤:**
– 根据粘性便签中的说明修改Auth0详细信息
– 设置适当的环境变量
– 安装必要的依赖包
3. **错误处理:**
– 使用代码节点的错误输出功能
– 验证失败时返回401 Unauthorized响应
– 验证成功时继续处理请求
### 注意事项
– 此模板仅适用于自托管的n8n社区版
– 需要安装第三方依赖包
– 在n8n云上无法正常工作

评论(0)