Skip to main content

API 金鑰和認證

warning

切勿在沒有適當安全措施的情況下將 AgentBuilder 連接埠直接暴露到網際網路。 設定 LANGFLOW_AUTO_LOGIN=False,使用非預設的 LANGFLOW_SECRET_KEY,並在啟用認證的反向代理後面部署您的 AgentBuilder 伺服器。 更多資訊請參閱啟動啟用認證的 AgentBuilder 伺服器

認證憑證有助於防止未經授權存取您的 AgentBuilder 伺服器、 Flow以及通過Components連接的服務。

在 AgentBuilder 中,您使用三種類型的憑證:

  • AgentBuilder API 金鑰:用於與 AgentBuilder API 認證並授權伺服器端 AgentBuilder 動作,例如執行 Flow和上傳檔案。
  • Components API 金鑰:用於 AgentBuilder 與通過Components連接的服務之間的認證,例如模型提供者或第三方 API。
  • 認證環境變數:這些環境變數配置 AgentBuilder 如何處理使用者認證和授權。

AgentBuilder API 金鑰

您可以使用 AgentBuilder API 金鑰以程式設計方式與 AgentBuilder 互動。

預設情況下,大多數 AgentBuilder API 端點,例如 /v1/run/$FLOW_ID,需要使用 AgentBuilder API 金鑰進行認證。

要為 AgentBuilder MCP 伺服器配置認證,請參閱將 AgentBuilder 用作 MCP 伺服器

AgentBuilder API 金鑰權限

AgentBuilder API 金鑰採用建立它的使用者的權限。 這意味著您建立的 API 金鑰具有與您相同的權限和存取權,包括存取您的 Flow、Components和 AgentBuilder 資料庫。 AgentBuilder API 金鑰無法用於存取您自己的 AgentBuilder 伺服器以外的資源。

在單使用者環境中,您始終是超級使用者,您的 AgentBuilder API 金鑰始終具有超級使用者權限。

在多使用者環境中,不是超級使用者的使用者無法使用其 API 金鑰存取其他使用者的資源。 您必須啟動啟用認證的 AgentBuilder 伺服器以允許使用者管理和建立非超級使用者帳戶。

建立 AgentBuilder API 金鑰

您可以在 AgentBuilder 設定中產生 AgentBuilder API 金鑰,或使用 AgentBuilder CLI。

如果您的 AgentBuilder 伺服器在 --backend-only 模式下運行,則需要 CLI 選項。

  1. 在 AgentBuilder 標頭中,按一下您的個人資料圖示,然後選取設定
  2. 按一下 AgentBuilder API 金鑰,然後按一下新增
  3. 為您的金鑰命名,然後按一下建立 API 金鑰
  4. 複製 API 金鑰並安全儲存。

使用 AgentBuilder API 金鑰

要認證 AgentBuilder API 請求,請將您的 AgentBuilder 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": {}}'

有關形成 AgentBuilder API 請求的更多資訊,請參閱開始使用 AgentBuilder API使用 AgentBuilder API 觸發FLOW

追蹤 API 金鑰使用情況

預設情況下,AgentBuilder 通過您的 AgentBuilder 資料庫 中的 total_useslast_used_at 記錄追蹤 API 金鑰使用情況。

要停用 API 金鑰追蹤,請在您的 AgentBuilder 環境變數 中設定 LANGFLOW_DISABLE_TRACK_APIKEY_USAGE=True。 這可以幫助避免高並發期間的資料庫爭用。

撤銷 API 金鑰

要撤銷和刪除 API 金鑰,請執行以下操作:

  1. 在 AgentBuilder 標頭中,按一下您的個人資料圖示,然後選取設定
  2. 按一下 AgentBuilder API 金鑰
  3. 選取您要刪除的金鑰,然後按一下 刪除

此動作會立即使金鑰失效,並防止再次使用。

Components API 金鑰

Components API 金鑰授權存取由FLOW中的Components調用的外部服務,例如模型提供者、資料庫或第三方 API。 這些不是 AgentBuilder API 金鑰或一般應用程式憑證。

在 AgentBuilder 中,您可以在 設定 中的全域變數中儲存Components API 金鑰,或從您的運行時環境匯入它們。 更多資訊請參閱全域變數

您在服務提供者的平台內建立和管理Components API 金鑰。 AgentBuilder 只儲存加密的金鑰值或對儲存在其他地方的金鑰的安全引用;它不會在來源管理實際憑證。 這意味著從 AgentBuilder 刪除全域變數不會刪除或使服務提供者系統中的實際 API 金鑰失效。 您必須直接使用服務提供者的介面或 API 刪除或輪換Components API 金鑰。

為了增加安全性,您可以設定 LANGFLOW_REMOVE_API_KEYS=True 以從您的 AgentBuilder 資料庫 中的FLOW資料中省略 API 金鑰。 此外,在匯出 Flow時,您可以選擇從匯出的 Flow JSON 中省略 API 金鑰。

認證環境變數

本節描述可用的認證配置變數。

您可以使用 AgentBuilder 儲存庫中的 .env.example 檔案作為您自己的 .env 檔案的範本。

LANGFLOW_AUTO_LOGIN

此變數控制是否需要認證才能存取您的 AgentBuilder 伺服器,包括視覺編輯器、API 和 AgentBuilder CLI:

  • 如果 LANGFLOW_AUTO_LOGIN=False,自動登入被停用。使用者必須登入視覺編輯器,以超級使用者身份認證來運行某些 AgentBuilder CLI 命令,並使用 AgentBuilder API 金鑰進行 AgentBuilder API 請求。 如果為 false,AgentBuilder 團隊建議您也明確設定 LANGFLOW_SUPERUSERLANGFLOW_SUPERUSER_PASSWORD 以避免使用不安全的預設值。

  • 如果 LANGFLOW_AUTO_LOGIN=True(預設),所有 API 請求需要使用 AgentBuilder API 金鑰進行認證,但視覺編輯器會自動將所有使用者登入為超級使用者,而 AgentBuilder 只使用預設的超級使用者憑證。 所有使用者存取相同的視覺編輯器環境而沒有密碼保護,他們可以作為超級使用者運行所有 AgentBuilder CLI 命令,而 AgentBuilder 會根據使用者的超級使用者權限自動認證後端和前端之間的內部請求。 如果您還想繞過 AgentBuilder API 請求的認證,除了其他繞過的認證,請參閱 LANGFLOW_SKIP_AUTH_AUTO_LOGIN

AgentBuilder 不允許使用者同時即時編輯相同的 Flow。 如果兩個使用者編輯相同的 Flow,AgentBuilder 只會根據該使用者的工作區狀態儲存最近編輯者的工作。在此期間其他使用者所做的任何更改都會被覆蓋。

預設認證強制執行和 LANGFLOW_SKIP_AUTH_AUTO_LOGIN

在 AgentBuilder 1.6 版本中,預設設定是 LANGFLOW_AUTO_LOGIN=TrueLANGFLOW_SKIP_AUTH_AUTO_LOGIN=False。 這只對 API 請求強制執行認證,如前一節所述。

為了臨時向後相容性,您可以通過將兩個變數都設定為 true 來恢復到早期版本的完全未認證行為。 但是,未來版本將設定 LANGFLOW_AUTO_LOGIN=False 並移除 LANGFLOW_SKIP_AUTH_AUTO_LOGIN。 屆時,AgentBuilder 將嚴格強制執行 API 金鑰對 API 請求的認證,並且您可以通過設定 LANGFLOW_AUTO_LOGIN=True 手動停用某些功能的認證,例如視覺編輯器。

早期版本中的認證強制執行

AgentBuilder 1.5 版本是第一個能夠無論 LANGFLOW_AUTO_LOGIN 的值如何都對 AgentBuilder API 請求強制執行認證的版本。 作為向後相容性的臨時繞過,此版本新增了 LANGFLOW_SKIP_AUTH_AUTO_LOGIN 環境變數,並預設將兩個變數都設定為 true 以保留早期版本的完全未認證行為。 這允許使用者升級到 1.5 版本而不改變認證行為。

在 1.5 版本之前的 AgentBuilder 版本中,AgentBuilder API 請求不需要認證。 此外,LANGFLOW_AUTO_LOGIN=True 的預設設定會自動授予所有使用者視覺編輯器中的超級使用者權限,並允許所有使用者作為超級使用者運行所有 AgentBuilder CLI 命令。

LANGFLOW_ENABLE_SUPERUSER_CLI

控制 AgentBuilder CLI 中 langflow superuser 命令的可用性。 預設為 true,但建議使用 false 以防止無限制的超級使用者建立。 更多資訊請參閱 langflow superuser

LANGFLOW_SUPERUSER 和 LANGFLOW_SUPERUSER_PASSWORD

這些變數指定 AgentBuilder 伺服器的超級使用者的使用者名稱和密碼。


_10
LANGFLOW_SUPERUSER=administrator
_10
LANGFLOW_SUPERUSER_PASSWORD=securepassword

如果 LANGFLOW_AUTO_LOGIN=False,則需要這些變數。 否則,它們不相關。

當您啟動啟用認證的 AgentBuilder 伺服器時,如果需要這些變數但未設定,則 AgentBuilder 使用預設值 langflowlangflow。 當使用 AgentBuilder CLI 命令 langflow superuser 時,這些預設值不適用。

LANGFLOW_SECRET_KEY

此環境變數儲存用於加密敏感資料(如 API 金鑰)的秘密金鑰。 AgentBuilder 使用 Fernet 程式庫進行秘密金鑰加密。

如果沒有提供秘密金鑰,AgentBuilder 會自動產生一個。

但是,您應該在生產環境中產生並明確設定自己的金鑰。 這對於多實例部署(如 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 上運行 AgentBuilder,請在 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

只有超級使用者可以管理 AgentBuilder 伺服器的使用者帳戶,但只有在您的伺服器啟用認證時,使用者管理才重要。 更多資訊請參閱啟動啟用認證的 AgentBuilder 伺服器

LANGFLOW_CORS_*

跨來源資源共享 (CORS) 配置控制當您的 AgentBuilder 前端和後端從不同來源提供服務時,如何處理認證憑證。 以下 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_ORIGINSString*允許的 CORS 來源。以逗號分隔的來源列表,或使用 * 代表所有來源。

預設配置啟用 CORS 憑證並使用萬用字元 (*) 允許所有來源、標頭和方法:


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

danger

AgentBuilder 的預設 CORS 設定在生產環境中可能是一個安全風險,因為任何網站都可以向您的 AgentBuilder 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

啟動啟用認證的 AgentBuilder 伺服器

本節向您展示如何使用認證環境變數部署啟用認證的 AgentBuilder 伺服器。 這涉及停用自動登入、設定超級使用者憑證、產生秘密加密金鑰以及啟用使用者管理。

對於 AgentBuilder 暴露到共享或公共網路的任何部署,或多個使用者存取相同 AgentBuilder 伺服器的部署,建議使用此配置。

啟用認證後,所有使用者必須使用有效憑證登入視覺編輯器,並且 API 請求需要使用 AgentBuilder API 金鑰進行認證。 此外,您必須以超級使用者身份登入才能管理使用者和建立具有超級使用者權限的 AgentBuilder API 金鑰

啟動 AgentBuilder 伺服器

  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 以加密敏感資料。

    如果您沒有設定秘密金鑰,AgentBuilder 會自動產生一個,但不建議在生產環境中使用。

    有關產生和設定秘密金鑰的說明,請參閱 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 檔案中的配置啟動 AgentBuilder:


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

    使用 .env 檔案啟動 AgentBuilder 會自動將您認證為 LANGFLOW_SUPERUSERLANGFLOW_SUPERUSER_PASSWORD 中設定的超級使用者。 如果您沒有明確設定這些變數,系統自動登入的預設值是 langflowlangflow

  6. 驗證伺服器正在運行。預設位置是 http://localhost:7860

接下來,您可以為您的 AgentBuilder 伺服器新增使用者以與他人合作處理FLOW。

以管理員身份管理使用者

  1. 要完成首次以超級使用者身份登入,請前往 http://localhost:7860/login

    如果您沒有使用預設位置,請將 localhost:7860 替換為您的伺服器地址。

  2. 使用您在 .env 中設定的超級使用者憑證登入 (LANGFLOW_SUPERUSERLANGFLOW_SUPERUSER_PASSWORD)。

  3. 要管理伺服器上的使用者,請導航到 /admin,如 http://localhost:7860/admin,按一下您的個人資料圖示,然後按一下管理頁面

    作為超級使用者,您可以新增使用者、設定權限、重設密碼和刪除帳戶。

  4. 要新增使用者,按一下新使用者,然後完成使用者帳戶表單:

    1. 輸入使用者名稱和密碼。
    2. 要立即啟用帳戶,請選取啟用。非啟用使用者無法登入或存取他們在變成非啟用之前建立的 Flow。
    3. 如果您不希望使用者具有完整的管理權限,請取消選取超級使用者
    4. 按一下儲存。新使用者會出現在管理頁面中。
  5. 要測試新使用者的存取權,請登出 AgentBuilder,然後使用新使用者的憑證登入。

    嘗試存取 /admin 頁面。 如果新使用者不是超級使用者,您會被重新導向到 /flows 頁面。

另請參閱

Search