跳到主要内容

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_useslast_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_SUPERUSERLANGFLOW_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=TrueLANGFLOW_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 使用默认值 langflowlangflow。 这些默认值在使用 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_ADDRESSFLOW_IDLANGFLOW_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布尔值FalseAPI 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_SUPERUSERLANGFLOW_SUPERUSER_PASSWORD 设置为您想要的超级用户凭据。

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

  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_SUPERUSERLANGFLOW_SUPERUSER_PASSWORD 中设置的超级用户。 如果您没有显式设置这些变量,系统自动登录的默认值是 langflowlangflow

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

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

以管理员身份管理用户

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

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

  2. 使用您在 .env 中设置的超级用户凭据登录(LANGFLOW_SUPERUSERLANGFLOW_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