跳到主要内容

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 的 设置 (Settings) 中或通过 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 密钥进行 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 将仅根据该用户 工作区 (workspace) 的状态保存最近一次编辑者的工作。另一位用户在此期间所做的任何更改都将被覆盖。

默认身份验证强制执行与 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 API 请求强制执行身份验证的版本,无论 LANGFLOW_AUTO_LOGIN 的值如何。作为向后兼容的临时绕过,该版本增加了 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 密钥 进行验证。这是标准行为,用户通过 Langflow UI 或 CLI 创建和管理 API 密钥。
env根据 LANGFLOW_API_KEY 环境变量进行验证。适用于 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_HEADERSList[String] 或 String*CORS 请求允许的标头。提供以逗号分隔的标头列表,或使用 * 允许所有标头。
LANGFLOW_CORS_ALLOW_METHODSList[String] 或 String*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_HOSTSList[String]未设置可以绕过 SSRF 防护检查的允许主机、IP 地址或 CIDR 范围的逗号分隔列表。例如: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 端点的所有请求都被视为由工作流所有者发送。

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

若要要求对 Webhook 进行 API 密钥身份验证,请在您的 Langflow .env 文件中设置 LANGFLOW_WEBHOOK_AUTH_ENABLE=True

启用 Webhook 身份验证后,您必须在每个 Webhook 请求中通过 HTTP 标头或查询参数提供 Langflow API 密钥。欲了解更多信息,请参阅 要求对 Webhook 进行身份验证

启动启用身份验证的 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. 验证服务器是否正在运行。默认位置是 https://:7860

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

以管理员身份管理用户

  1. 要完成作为超级用户的首次登录,请转到 https://:7860/login

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

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

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

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

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

    1. 输入用户名和密码。
    2. 要立即激活账户,请选择 Active。处于非活动状态的用户无法登录或访问他们在变更为非活动状态之前创建的工作流。
    3. 如果您不希望该用户拥有完整的管理权限,请取消勾选 Superuser
    4. 点击 Save。新用户将出现在 Admin Page 中。
  5. 将凭据发送给用户,以便他们登录 Langflow。超级用户在创建账户时设置初始密码,因此用户必须从超级用户那里获取其登录凭据。

  6. 要测试新用户的访问权限,请退出 Langflow,然后使用新用户的凭据登录。

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

另请参阅

Search