跳到主要内容

API 密钥和身份验证

注意

切勿在没有适当安全措施的情况下将 Langflow 端口直接暴露给互联网。 设置 LANGFLOW_AUTO_LOGIN=False,使用非默认的 LANGFLOW_SECRET_KEY,并将您的 Langflow 服务器部署在启用身份验证的反向代理之后。 更多信息,请参阅启动启用身份验证的 Langflow 服务器。

身份验证凭据有助于防止对您的 Langflow 服务器、流以及通过组件连接的服务的未经授权访问。

在 Langflow 中,您会使用三种类型的凭据:

  • Langflow API 密钥:用于 Langflow API 的身份验证,并授权运行流和上传文件等服务器端 Langflow 操作。
  • 组件 API 密钥:用于 Langflow 与通过组件连接的服务(如模型提供商或第三方 API)之间的身份验证。
  • 身份验证环境变量:这些环境变量配置 Langflow 如何处理用户身份验证和授权。

Langflow API 密钥​

您可以使用 Langflow API 密钥以编程方式与 Langflow 交互。

默认情况下,大多数 Langflow API 端点(例如 /v1/run/$FLOW_ID)都需要使用 Langflow API 密钥进行身份验证。

Langflow 会根据存储在数据库中的密钥验证 API 密钥,但您也可以将 Langflow 配置为根据环境变量验证 API 密钥。 更多信息,请参阅 LANGFLOW_API_KEY_SOURCE。

要为流 Webhook 端点启用 API 密钥身份验证,请使用 LANGFLOW_WEBHOOK_AUTH_ENABLE 环境变量。 要为 Langflow MCP 服务器配置身份验证,请参阅将 Langflow 用作 MCP 服务器。

Langflow API 密钥权限​

Langflow API 密钥继承创建它的用户的权限。 这意味着您创建的 API 密钥具有与您相同的权限和访问权限,包括访问您的流、组件和 Langflow 数据库。 Langflow API 密钥不能用于访问您自己的 Langflow 服务器之外的资源。

在单用户环境中,您始终是超级用户,您的 Langflow API 密钥始终具有超级用户权限。

在多用户环境中,非超级用户不能使用其 API 密钥访问其他用户的资源。 超级用户只能运行自己的流,不能运行其他用户拥有的流。 您必须启动启用身份验证的 Langflow 服务器以允许用户管理和创建非超级用户账户。

创建 Langflow API 密钥​

您可以在 Langflow 设置中或使用 Langflow CLI 生成 Langflow API 密钥。

如果您的 Langflow 服务器以 --backend-only 模式运行,则必须使用 CLI 选项。

  1. 在 Langflow 顶部导航栏中,点击您的个人资料图标,然后选择 Settings(设置)。
  2. 点击 Langflow API Keys,然后点击 Add New。
  3. 为您的密钥命名,然后点击 Create API Key。
  4. 复制 API 密钥并安全存储。

使用 Langflow API 密钥​

要验证 Langflow API 请求,请在 x-api-key 请求头或查询参数中传递您的 Langflow API 密钥。


_10
curl -X POST \
_10
"http://$LANGFLOW_SERVER_ADDRESS/api/v1/run/$FLOW_ID?stream=false" \
_10
-H "Content-Type: application/json" \
_10
-H "x-api-key: $LANGFLOW_API_KEY" \
_10
-d '{"inputs": {"text":""}, "tweaks": {}}'

有关构建 Langflow API 请求的更多信息,请参阅 Langflow API 入门 和 使用 Langflow API 触发流。

跟踪 API 密钥使用情况​

默认情况下,Langflow 通过 Langflow 数据库中的 total_uses 和 last_used_at 记录跟踪 API 密钥的使用情况。

要禁用 API 密钥跟踪,请在 Langflow 环境变量中设置 LANGFLOW_DISABLE_TRACK_APIKEY_USAGE=True。 这有助于在高并发期间避免数据库争用。

撤销 API 密钥​

要撤销并删除 API 密钥,请执行以下操作:

  1. 在 Langflow 顶部导航栏中,点击您的个人资料图标,然后选择 Settings(设置)。
  2. 点击 Langflow API Keys。
  3. 选择您要删除的密钥,然后点击 Delete(删除)。

此操作会立即使密钥失效并防止其再次被使用。

组件 API 密钥​

组件 API 密钥授权访问流中组件调用的外部服务,例如模型提供商、数据库或第三方 API。 这些不是 Langflow API 密钥或通用应用程序凭据。

在 Langflow 中,您可以将组件 API 密钥存储在 设置 中的全局变量中,或者从您的运行时环境导入它们。 有关更多信息,请参阅全局变量。

您在服务提供商的平台内创建和管理组件 API 密钥。 Langflow 仅存储加密的密钥值或对存储在别处的密钥的安全引用;它不管理源头的实际凭据。 这意味着从 Langflow 中删除全局变量不会删除或使服务提供商系统中的实际 API 密钥失效。 您必须直接使用服务提供商的界面或 API 删除或轮换组件 API 密钥。

为了增加安全性,您可以设置 LANGFLOW_REMOVE_API_KEYS=True,以便在 Langflow 数据库的流数据中省略 API 密钥和令牌。 此外,在导出流时,您可以选择从导出的流 JSON 中省略 API 密钥。

身份验证环境变量​

本节介绍可用的身份验证配置变量。

您可以使用 Langflow 存储库中的 .env.example 文件作为您自己的 .env 文件的模板。

LANGFLOW_AUTO_LOGIN​

此变量控制是否需要身份验证才能访问您的 Langflow 服务器,包括可视化编辑器、API 和 Langflow CLI:

  • 如果 LANGFLOW_AUTO_LOGIN=False,则禁用自动登录。用户必须登录可视化编辑器,以超级用户身份通过身份验证才能运行某些 Langflow CLI 命令,并在 Langflow API 请求中使用 Langflow API 密钥。 如果为 false,Langflow 团队建议您还显式设置 LANGFLOW_SUPERUSER 和 LANGFLOW_SUPERUSER_PASSWORD,以避免使用不安全的默认值。

  • 如果 LANGFLOW_AUTO_LOGIN=True(默认),所有 API 请求都需要使用 Langflow API 密钥进行身份验证,但可视化编辑器会自动将所有用户登录为超级用户,并且 Langflow _仅_使用默认的超级用户凭据。 所有用户在没有密码保护的情况下访问同一个可视化编辑器环境,他们可以作为超级用户运行所有 Langflow CLI 命令,并且 Langflow 会根据用户的超级用户权限自动验证后端和前端之间的内部请求。 如果您还想在跳过其他身份验证的同时跳过 Langflow API 请求的身份验证,请参阅 LANGFLOW_SKIP_AUTH_AUTO_LOGIN。

Langflow 不允许用户同时实时编辑同一个流。 如果两个用户编辑同一个流,Langflow 仅根据该用户的工作区状态保存最近一位编辑者的工作。在此期间另一位用户所做的任何更改都将被覆盖。

默认身份验证强制执行和 LANGFLOW_SKIP_AUTH_AUTO_LOGIN​

在 Langflow 1.6 版本中,默认设置是 LANGFLOW_AUTO_LOGIN=True 和 LANGFLOW_SKIP_AUTH_AUTO_LOGIN=False。 如前所述,这仅对 API 请求强制执行身份验证。

为了临时的向后兼容性,您可以通过将这两个变量都设置为 true 来恢复早期版本中完全未经身份验证的行为。 但是,未来的版本将设置 LANGFLOW_AUTO_LOGIN=False 并移除 LANGFLOW_SKIP_AUTH_AUTO_LOGIN。 届时,Langflow 将对 API 请求严格强制执行 API 密钥身份验证,您可以通过设置 LANGFLOW_AUTO_LOGIN=True 手动禁用某些功能(如可视化编辑器)的身份验证。

早期版本中的身份验证强制执行

Langflow 1.5 版本是第一个无论 LANGFLOW_AUTO_LOGIN 的值如何,都可以对 Langflow API 请求强制执行身份验证的版本。 作为向后兼容的临时绕过,此版本添加了 LANGFLOW_SKIP_AUTH_AUTO_LOGIN 环境变量,并将这两个变量默认设置为 true,以保留早期版本中完全未经身份验证的行为。 这允许用户升级到 1.5 版本而无需更改身份验证行为。

在早于 1.5 的 Langflow 版本中,Langflow API 请求不需要身份验证。 此外,LANGFLOW_AUTO_LOGIN=True 的默认设置会自动授予所有用户可视化编辑器中的超级用户权限,并允许所有用户以超级用户身份运行所有 Langflow CLI 命令。

LANGFLOW_ENABLE_SUPERUSER_CLI​

控制 Langflow CLI 中 langflow superuser 命令的可用性。 默认值为 true,但建议设置为 false 以防止不受限制地创建超级用户。 有关更多信息,请参阅 langflow superuser。

LANGFLOW_SUPERUSER 和 LANGFLOW_SUPERUSER_PASSWORD​

这些变量指定 Langflow 服务器超级用户的用户名和密码。


_10
LANGFLOW_SUPERUSER=administrator
_10
LANGFLOW_SUPERUSER_PASSWORD=securepassword

如果 LANGFLOW_AUTO_LOGIN=False,则需要这些变量。 否则,它们不相关。

当您启动启用身份验证的 Langflow 服务器时,如果需要这些变量但_未_设置,则 Langflow 使用默认值 langflow 和 langflow。 这些默认值在使用 Langflow CLI 命令 langflow superuser 时不适用。

LANGFLOW_SECRET_KEY​

此环境变量存储用于加密 API 密钥等敏感数据的密钥。 Langflow 使用 Fernet 库进行密钥加密。

如果未提供密钥,Langflow 会自动生成一个。

但是,您应该在生产环境中生成并显式设置您自己的密钥。 这对于 Kubernetes 等多实例部署尤为重要,以确保各实例之间的加密一致。

要为 LANGFLOW_SECRET_KEY 生成加密密钥,请执行以下操作:

  1. 运行命令以生成密钥并将其复制到剪贴板。

    • macOS:生成密钥并将其复制到剪贴板:


      _10
      python3 -c "from secrets import token_urlsafe; print(f'LANGFLOW_SECRET_KEY={token_urlsafe(32)}')" | pbcopy

    • Linux:生成密钥并将其复制到剪贴板:


      _10
      python3 -c "from secrets import token_urlsafe; print(f'LANGFLOW_SECRET_KEY={token_urlsafe(32)}')" | xclip -selection clipboard

    • Unix:生成密钥并将其打印到终端以便手动复制:


      _10
      python3 -c "from secrets import token_urlsafe; print(f'LANGFLOW_SECRET_KEY={token_urlsafe(32)}')"

  2. 将值粘贴到您的 .env 文件中:


    _10
    LANGFLOW_SECRET_KEY=dBuu...2kM2_fb

    如果您在 Docker 上运行 Langflow,请在 docker-compose.yml 文件中引用 .env 文件中的 LANGFLOW_SECRET_KEY,如下所示:


    _10
    environment:
    _10
    - LANGFLOW_SECRET_KEY=${LANGFLOW_SECRET_KEY}

LANGFLOW_NEW_USER_IS_ACTIVE​

当 LANGFLOW_NEW_USER_IS_ACTIVE=False(默认)时,超级用户必须在显式激活新用户账户后,该用户才能登录可视化编辑器。 超级用户还可以根据需要停用用户账户。

当 LANGFLOW_NEW_USER_IS_ACTIVE=True 时,新用户账户会自动激活。


_10
LANGFLOW_NEW_USER_IS_ACTIVE=False

只有超级用户可以管理 Langflow 服务器的用户账户,但用户管理仅在您的服务器启用了身份验证时才有意义。 有关更多信息,请参阅启动启用身份验证的 Langflow 服务器。

LANGFLOW_API_KEY_SOURCE​

此变量控制 Langflow 如何验证 API 密钥。

值描述
db (默认)根据存储在数据库中的 Langflow API 密钥验证 API 密钥。这是标准行为,用户通过 Langflow UI 或 CLI 创建和管理 API 密钥。
env根据 LANGFLOW_API_KEY 环境变量验证 API 密钥。适用于 Kubernetes 部署、CI/CD 流水线或任何您希望在没有数据库配置的情况下注入预定义 API 密钥的环境。

默认情况下,Langflow 在 LANGFLOW_API_KEY_SOURCE=db 时根据 Langflow 数据库验证 x-api-key 请求头。 使用基于数据库的验证时,您可以创建具有每个用户权限的多个密钥、跟踪使用情况并通过 Langflow UI 或 CLI 管理密钥。

当 LANGFLOW_API_KEY_SOURCE=env 时,Langflow 根据 LANGFLOW_API_KEY 环境变量的值验证 x-api-key 请求头。 这意味着 Langflow 可以在无状态环境中安全运行,例如使用 LFX 或 Kubernetes secrets。

当 LANGFLOW_API_KEY_SOURCE=env 时,该部署只能使用一个 API 密钥。所有经过身份验证的请求都使用相同的 API 密钥,成功的身份验证将授予超级用户权限。 此模式专为单租户部署或自动化系统设计,不适用于不同用户需要不同访问级别的多用户环境。要轮换您的密钥,请更新环境变量并重启 Langflow 服务器。

要启用基于环境的 API 密钥验证:

  1. 在 Langflow .env 文件中,将 API 密钥来源设置为 env:


    _10
    LANGFLOW_API_KEY_SOURCE=env

  2. 在 Langflow .env 文件中,设置 API 密钥值:


    _10
    LANGFLOW_API_KEY=your-secure-api-key

  3. 在您的请求中使用 API 密钥:


    _10
    curl -X POST \
    _10
    "http://LANGFLOW_SERVER_ADDRESS/api/v1/run/FLOW_ID?stream=false" \
    _10
    -H "Content-Type: application/json" \
    _10
    -H "x-api-key: LANGFLOW_API_KEY" \
    _10
    -d '{"inputs": {"text":""}, "tweaks": {}}'

    将 LANGFLOW_SERVER_ADDRESS、FLOW_ID 和 LANGFLOW_API_KEY 替换为您部署中的实际值。

Kubernetes 部署示例

要在 Kubernetes Secret 中配置基于环境的 API 密钥,请执行以下操作:

  1. 使用您的 API 密钥创建一个 Kubernetes Secret:


    _10
    apiVersion: v1
    _10
    kind: Secret
    _10
    metadata:
    _10
    name: langflow-api-key
    _10
    type: Opaque
    _10
    stringData:
    _10
    api-key: "YOUR_API_KEY"

    将 YOUR_API_KEY 替换为 Langflow .env 文件中的 LANGFLOW_API_KEY 值。

  2. 在您的 Kubernetes 部署中引用 langflow-api-key Secret:


    _18
    apiVersion: apps/v1
    _18
    kind: Deployment
    _18
    metadata:
    _18
    name: langflow
    _18
    spec:
    _18
    template:
    _18
    spec:
    _18
    containers:
    _18
    - name: langflow
    _18
    image: langflowai/langflow:latest
    _18
    env:
    _18
    - name: LANGFLOW_API_KEY_SOURCE
    _18
    value: "env"
    _18
    - name: LANGFLOW_API_KEY
    _18
    valueFrom:
    _18
    secretKeyRef:
    _18
    name: langflow-api-key
    _18
    key: api-key

Docker Compose 示例

要在 Docker Compose 中配置基于环境的 API 密钥,请执行以下操作:

  1. 在您的 Langflow .env 文件中设置 API 密钥。


    _10
    LANGFLOW_API_KEY=your-secure-api-key

    将 YOUR_API_KEY 替换为您实际的 Langflow API 密钥值。

  2. 创建或更新您的 docker-compose.yml 文件以设置 LANGFLOW_API_KEY_SOURCE=env 并引用 LANGFLOW_API_KEY。


    _10
    services:
    _10
    langflow:
    _10
    image: langflowai/langflow:latest
    _10
    environment:
    _10
    - LANGFLOW_API_KEY_SOURCE=env
    _10
    - LANGFLOW_API_KEY=${LANGFLOW_API_KEY}
    _10
    ports:
    _10
    - "7860:7860"

LANGFLOW_CORS_*​

跨源资源共享 (CORS) 配置控制当您的 Langflow 前端和后端从不同源提供服务时,如何处理身份验证凭据。 可以使用以下 LANGFLOW_CORS_* 环境变量:

变量格式默认值描述
LANGFLOW_CORS_ALLOW_CREDENTIALS布尔值True是否允许 CORS 请求中的凭据,例如 cookie 和授权头。
LANGFLOW_CORS_ALLOW_HEADERS字符串列表或字符串*CORS 请求允许的请求头。提供以逗号分隔的请求头列表或使用 * 允许所有请求头。
LANGFLOW_CORS_ALLOW_METHODS字符串列表或字符串*CORS 请求允许的 HTTP 方法。提供以逗号分隔的方法列表或使用 * 允许所有方法。
LANGFLOW_CORS_ORIGINS字符串*允许的 CORS 源。提供以逗号分隔的源列表或使用 * 允许所有源。

默认配置启用了 CORS 凭据,并使用通配符 (*) 允许所有源、请求头和方法:


_10
LANGFLOW_CORS_ORIGINS=*
_10
LANGFLOW_CORS_ALLOW_CREDENTIALS=True
_10
LANGFLOW_CORS_ALLOW_HEADERS=*
_10
LANGFLOW_CORS_ALLOW_METHODS=*

危险

Langflow 的默认 CORS 设置在生产环境中可能存在安全风险,因为任何网站都可以向您的 Langflow API 发送请求,并且任何网站都可以在跨源请求中包含凭据,包括身份验证 cookie 和授权头。

在生产部署中,请在 LANGFLOW_CORS_ORIGINS 中指定确切的源。 如果需要,您还可以指定允许的请求头和方法。 例如:


_10
LANGFLOW_CORS_ORIGINS=https://yourdomain.com,https://app.yourdomain.com
_10
LANGFLOW_CORS_ALLOW_CREDENTIALS=True
_10
LANGFLOW_CORS_ALLOW_HEADERS=Content-Type,Authorization
_10
LANGFLOW_CORS_ALLOW_METHODS=GET,POST,PUT

SSRF 防护​

以下环境变量为 API Request 组件配置服务端请求伪造 (SSRF) 防护。 SSRF 防护可防止对内部或私有网络资源(如私有 IP 范围、回环地址和云元数据端点)的请求。

变量格式默认值描述
LANGFLOW_SSRF_PROTECTION_ENABLED布尔值False为 API Request 组件启用 SSRF 防护。启用后,组件会拦截对私有 IP 地址的请求。禁用时,不会拦截请求。
LANGFLOW_SSRF_ALLOWED_HOSTS字符串列表未设置以逗号分隔的允许的主机、IP 地址或 CIDR 范围列表,可以绕过 SSRF 防护检查。例如:192.168.1.0/24,10.0.0.5,*.internal.company.local。

LANGFLOW_WEBHOOK_AUTH_ENABLE​

此变量控制 Webhook 端点是否需要 API 密钥身份验证。

变量格式默认值描述
LANGFLOW_WEBHOOK_AUTH_ENABLE布尔值False当为 True 时,Webhook 端点需要 API 密钥身份验证,并验证经过身份验证的用户是否拥有正在执行的流。当为 False 时,不需要 Langflow API 密钥,发往 Webhook 端点路的所有请求都被视为由流所有者发送。

默认情况下,Webhooks 在 LANGFLOW_WEBHOOK_AUTH_ENABLE=False 时作为流所有者运行,无需身份验证。

要为 Webhooks 启用 API 密钥身份验证,请在 Langflow .env 文件中设置 LANGFLOW_WEBHOOK_AUTH_ENABLE=True。

启用 Webhook 身份验证后,您必须在每个 Webhook 请求中以 HTTP 请求头或查询参数的形式提供 Langflow API 密钥。更多信息,请参阅为 Webhooks 要求身份验证。

启动启用身份验证的 Langflow 服务器​

本节向您展示如何使用身份验证环境变量来部署启用身份验证的 Langflow 服务器。 这涉及禁用自动登录、设置超级用户凭据、生成加密密钥以及启用用户管理。

对于 Langflow 暴露在共享或公共网络中,或者多个用户访问同一个 Langflow 服务器的任何部署,建议采用此配置。

启用身份验证后,所有用户都必须使用有效的凭据登录可视化编辑器,且 API 请求需要使用 Langflow API 密钥进行身份验证。 此外,您必须以超级用户身份登录才能管理用户,并创建具有超级用户权限的 Langflow API 密钥。

启动 Langflow 服务器​

  1. 创建一个包含以下变量的 .env 文件:


    _10
    LANGFLOW_AUTO_LOGIN=False
    _10
    LANGFLOW_SUPERUSER=
    _10
    LANGFLOW_SUPERUSER_PASSWORD=
    _10
    LANGFLOW_SECRET_KEY=
    _10
    LANGFLOW_NEW_USER_IS_ACTIVE=False
    _10
    LANGFLOW_ENABLE_SUPERUSER_CLI=False

    您的 .env 文件可以包含其他环境变量。 本示例重点介绍身份验证变量。

  2. 将 LANGFLOW_SUPERUSER 和 LANGFLOW_SUPERUSER_PASSWORD 设置为您想要的超级用户凭据。

    对于一次性测试,您可以使用 administrator 和 password 等基础凭据。 在真实的开发和生产环境中,建议使用强密码并安全存储凭据。

  3. 推荐:生成并设置 LANGFLOW_SECRET_KEY 以加密敏感数据。

    如果您不设置密钥,Langflow 会自动生成一个,但不建议在生产环境中使用。

    有关生成和设置密钥的说明,请参阅 LANGFLOW_SECRET_KEY。

  4. 保存已填充变量的 .env 文件。例如:


    _10
    LANGFLOW_AUTO_LOGIN=False
    _10
    LANGFLOW_SUPERUSER=administrator
    _10
    LANGFLOW_SUPERUSER_PASSWORD=securepassword
    _10
    LANGFLOW_SECRET_KEY=dBuu...2kM2_fb
    _10
    LANGFLOW_NEW_USER_IS_ACTIVE=False
    _10
    LANGFLOW_ENABLE_SUPERUSER_CLI=False

  5. 使用 .env 文件中的配置启动 Langflow:


    _10
    uv run langflow run --env-file .env

    使用 .env 文件启动 Langflow 会自动将您验证为 LANGFLOW_SUPERUSER 和 LANGFLOW_SUPERUSER_PASSWORD 中设置的超级用户。 如果您没有显式设置这些变量,系统自动登录的默认值是 langflow 和 langflow。

  6. 验证服务器是否正在运行。默认位置是 http://localhost:7860。

接下来,您可以向 Langflow 服务器添加用户,以便与他人协作处理流。

以管理员身份管理用户​

  1. 要以超级用户身份完成首次登录,请访问 http://localhost:7860/login。

    如果您没有使用默认位置,请将 localhost:7860 替换为您的服务器地址。

  2. 使用您在 .env 中设置的超级用户凭据登录(LANGFLOW_SUPERUSER 和 LANGFLOW_SUPERUSER_PASSWORD)。

  3. 要管理服务器上的用户,请导航至 /admin(例如 http://localhost:7860/admin),点击个人资料图标,然后点击 Admin Page(管理员页面)。

    作为超级用户,您可以添加用户、设置权限、重置密码和删除账户。

  4. 要添加用户,点击 New User,然后填写用户账户表单:

    1. 输入用户名和密码。
    2. 要立即激活账户,请选择 Active。未激活的用户无法登录或访问他们在停用前创建的流。
    3. 如果您不希望该用户拥有完全的管理权限,请取消选择 Superuser。
    4. 点击 Save。新用户将出现在 Admin Page 中。
  5. 要测试新用户的访问权限,请退出 Langflow,然后使用新用户的凭据登录。

    尝试访问 /admin 页面。 如果新用户不是超级用户,您将被重定向到 /flows 页面。

另请参阅​

Search