凭据覆盖
凭据覆盖允许全局设置凭据数据。用户看不到这些数据,n8n 会在后台自动使用,例如通过 Connect(连接)按钮启用 OAuth 登录,而不暴露客户端密钥。
编辑器界面默认隐藏所有被覆盖的字段,用户可通过凭据上的 Connect(连接)按钮完成 OAuth 身份验证。
配置凭据覆盖所需的环境变量,请参阅凭据环境变量。
观看凭据覆盖教程,包含如何使用 REST API,配合现成工作流模板完成设置:
使用环境变量
将 CREDENTIALS_OVERWRITE_DATA 设为 { CREDENTIAL_NAME: { PARAMETER: VALUE }}。
不建议使用此方式。n8n 不保护环境变量,因此数据可能泄露给用户。
使用 REST API
建议通过自定义 REST 端点加载数据。
-
将
CREDENTIALS_OVERWRITE_ENDPOINT设为端点应提供服务的路径:export CREDENTIALS_OVERWRITE_ENDPOINT=send-credentials可选:设置
CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKEN,要求访问端点时提供 Bearer 令牌。未设置身份验证令牌时,出于安全原因,端点只能调用一次。
-
准备包含待覆盖凭据的 JSON 文件。例如,用于 Asana 和 GitHub 的
oauth-credentials.json:{
"asanaOAuth2Api": {
"clientId": "<id>",
"clientSecret": "<secret>"
},
"githubOAuth2Api": {
"clientId": "<id>",
"clientSecret": "<secret>"
}
} -
将文件发送到 n8n 实例:
curl -H "Content-Type: application/json" --data @oauth-credentials.json http://localhost:5678/send-credentials如果
CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKEN设为secure-token:curl -H "Content-Type: application/json" -H "Authorization: Bearer secure-token" --data @oauth-credentials.json http://localhost:5678/send-credentials
凭据可以扩展其他凭据。例如,googleSheetsOAuth2Api 扩展 googleOAuth2Api。可以在父级(googleOAuth2Api)上设置参数,所有子凭据都会使用。
显示 OAuth 权限范围字段
存在托管 OAuth 时,n8n 默认隐藏权限范围字段。要让用户为指定托管 OAuth 凭据类型配置范围,请将 N8N_MANAGED_OAUTH_SHOW_SCOPES 设为以逗号分隔的列表:
export N8N_MANAGED_OAUTH_SHOW_SCOPES=googleOAuth2Api
此设置仅作用于列出的凭据类型,不作用于扩展这些类型的其他凭据类型。
允许用户自行设置权限范围,可能影响已验证的 OAuth 应用。Google 等许多提供商要求在应用验证时,声明并说明应用请求的每个范围。如果用户添加未声明的范围,提供商可能暂停或封禁应用。只有用户添加范围不会影响应用验证状态的凭据类型,才应启用此设置。
持久化
要将凭据覆盖保存在数据库,并在多实例或队列模式下传播到全部工作进 程,请启用:
export CREDENTIALS_OVERWRITE_PERSISTENCE=true
启用后,n8n 将加密的覆盖数据存入 settings 表,并广播 reload-overwrite-credentials 事件,让工作进程重新加载最新值。禁用时,覆盖数据仅留在加载它的进程内存中,不会传播给工作进程,也不会在重启后保留。