Skip to content

凭据覆盖#

凭据覆盖允许你全局设置凭据数据。用户看不到这些数据,但 n8n 会在后台自动使用——例如通过「连接」按钮完成 OAuth 登录,而不暴露客户端密钥。

在编辑器 UI 中,n8n 默认隐藏所有被覆盖的字段,用户可通过凭据上的「连接」按钮使用 OAuth 认证。

用于配置凭据覆盖的环境变量请参阅凭据相关环境变量

使用环境变量#

CREDENTIALS_OVERWRITE_DATA 设为 { CREDENTIAL_NAME: { PARAMETER: VALUE }}

Warning

不推荐此做法。环境变量在 n8n 中未受特殊保护,数据可能泄露给用户。

使用 REST API#

推荐通过自定义 REST 端点加载数据。

  1. CREDENTIALS_OVERWRITE_ENDPOINT 设为端点应暴露的路径:

    1
    export CREDENTIALS_OVERWRITE_ENDPOINT=send-credentials
    

    可选:设置 CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKEN,要求以 Bearer 令牌访问该端点。

    Note

    未设置认证令牌时,出于安全考虑,该端点只能被调用一次。

  2. 准备包含要覆盖凭据的 JSON 文件。例如 Asana 与 GitHub 的 oauth-credentials.json

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    {
        "asanaOAuth2Api": {
            "clientId": "<id>",
            "clientSecret": "<secret>"
        },
        "githubOAuth2Api": {
            "clientId": "<id>",
            "clientSecret": "<secret>"
        }
    }
    
  3. 将文件发送到你的 n8n 实例:

    1
    curl -H "Content-Type: application/json" --data @oauth-credentials.json http://localhost:5678/send-credentials
    

    CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKEN 设为 secure-token

    1
    curl -H "Content-Type: application/json" -H "Authorization: Bearer secure-token" --data @oauth-credentials.json http://localhost:5678/send-credentials
    

Note

凭据可以扩展其他凭据。例如 googleSheetsOAuth2Api 扩展 googleOAuth2Api。你可以在父级(googleOAuth2Api)上设置参数,所有子凭据都会继承。

持久化#

若要将凭据覆盖存入数据库并在多实例或队列模式下传播到所有 worker,请启用:

1
export CREDENTIALS_OVERWRITE_PERSISTENCE=true

启用后,n8n 将加密后的覆盖项保存在 settings 表中,并广播 reload-overwrite-credentials 事件以便 worker 重新加载最新值。禁用时,覆盖项保留在加载它们的进程内存中,n8n 不会向 worker 传播,也不会在重启后保留。