跳到主要内容

凭据覆盖

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

编辑器界面默认隐藏所有被覆盖的字段,用户可通过凭据上的 Connect(连接)按钮完成 OAuth 身份验证。

配置凭据覆盖所需的环境变量,请参阅凭据环境变量。

观看凭据覆盖教程,包含如何使用 REST API,配合现成工作流模板完成设置:

使用环境变量 ​

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

注意

不建议使用此方式。n8n 不保护环境变量,因此数据可能泄露给用户。

使用 REST API ​

建议通过自定义 REST 端点加载数据。

  1. 将 CREDENTIALS_OVERWRITE_ENDPOINT 设为端点应提供服务的路径:

    export CREDENTIALS_OVERWRITE_ENDPOINT=send-credentials

    可选:设置 CREDENTIALS_OVERWRITE_ENDPOINT_AUTH_TOKEN,要求访问端点时提供 Bearer 令牌。

    未设置身份验证令牌时,出于安全原因,端点只能调用一次。

  2. 准备包含待覆盖凭据的 JSON 文件。例如,用于 Asana 和 GitHub 的 oauth-credentials.json:

    {
    "asanaOAuth2Api": {
    "clientId": "<id>",
    "clientSecret": "<secret>"
    },
    "githubOAuth2Api": {
    "clientId": "<id>",
    "clientSecret": "<secret>"
    }
    }
  3. 将文件发送到 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 事件,让工作进程重新加载最新值。禁用时,覆盖数据仅留在加载它的进程内存中,不会传播给工作进程,也不会在重启后保留。

相关资源 ​

本文为社区中文翻译。查看对应英文原文