跳到主要内容

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 1.5及更高版本中,即使 LANGFLOW_AUTO_LOGINTrue,大多数API端点也需要Langflow API密钥。 有关更多信息,请参阅 LANGFLOW_AUTO_LOGIN

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标题栏中,点击您的个人资料图标,然后选择 设置
  2. 点击 Langflow API密钥,然后点击 添加新
  3. 为您的密钥命名,然后点击 创建API密钥
  4. ReplicateAPI密钥并安全存储。

使用Langflow API密钥

要对Langflow API请求进行身份验证,请将您的Langflow API密钥作为 x-api-key 标头或查询参数传递。


_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 密钥

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

  1. 在 Langflow 标题栏中,点击您的个人资料图标,然后选择 设置
  2. 点击 Langflow API 密钥
  3. 选择您要删除的密钥,然后点击 删除

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

组件 API 密钥

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

在 Langflow 中,您可以将组件 API 密钥存储在 设置 中的全局变量中,或者从您的 Langflow .env 文件导入它们。 创建全局变量时,使用 凭据 类型来安全处理敏感信息。 有关更多信息,请参阅 全局变量

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

身份验证环境变量

本节描述可用的身份验证配置变量。 您可以使用 Langflow 仓库中的 .env.example 文件作为您自己的 .env 文件的模板。

LANGFLOW_AUTO_LOGIN

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

  • 如果 LANGFLOW_AUTO_LOGIN=False,则禁用自动登录。用户必须登录到可视化编辑器,并使用 Langflow API 密钥进行 Langflow API 请求。 如果为 false,您还必须设置 LANGFLOW_SUPERUSERLANGFLOW_SUPERUSER_PASSWORD

  • 如果 LANGFLOW_AUTO_LOGIN=True,Langflow 将绕过可视化编辑器和 API 请求的身份验证。 所有用户都可以访问相同的环境而无需密码保护。 如果您没有启用用户管理,则所有用户实际上都是超级用户。

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

版本 1.5 及更高版本中的 AUTO_LOGIN 和 API 身份验证

在 Langflow 1.5 及更高版本中,即使 AUTO_LOGIN 为 true,大多数 API 端点也需要 Langflow API 密钥。 唯一的例外是 MCP 端点 /v1/mcp/v1/mcp-projects/v2/mcp,这些端点从不要求身份验证。

LANGFLOW_AUTO_LOGIN 和 LANGFLOW_SKIP_AUTH_AUTO_LOGIN 选项

在早于 1.5 版本的 Langflow 中,如果 LANGFLOW_AUTO_LOGIN=True,则 Langflow 会自动将用户登录为超级用户而无需身份验证。 在这种情况下,API 请求不需要 Langflow API 密钥。

在 Langflow 1.5 版本中,您可以设置 LANGFLOW_SKIP_AUTH_AUTO_LOGIN=True LANGFLOW_AUTO_LOGIN=True 来跳过 API 请求的身份验证 允许所有用户自动登录为超级用户。 这是一个临时的向后兼容性绕过,LANGFLOW_SKIP_AUTH_AUTO_LOGIN 选项将在未来版本中移除。

如果 LANGFLOW_AUTO_LOGINLANGFLOW_SKIP_AUTH_AUTO_LOGIN 中有一个为 false,则需要身份验证。

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. 运行命令以生成密钥并将其Replicate到剪贴板。

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


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

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


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

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


      _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 服务器

本节介绍如何使用 身份验证环境变量 部署启用了身份验证的 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,点击您的个人资料图标,然后点击 管理页面

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

  4. 要添加用户,请点击 新建用户,然后完成用户帐户表单:

    1. 输入用户名和密码。
    2. 要立即激活帐户,请选择 激活。非活跃用户无法登录或访问他们在变为非活跃之前创建的流程。
    3. 如果您不希望用户拥有完全的管理权限,请取消选择 超级用户
    4. 点击 保存。新用户将出现在 管理页面 中。
  5. 要测试新用户的访问权限,请退出 Langflow,然后使用新用户的凭据登录。

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

Search