API 金鑰和認證
切勿在沒有適當安全措施的情況下將 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 選項。
- AgentBuilder 設定
- AgentBuilder CLI
- 在 AgentBuilder 標頭中,按一下您的個人資料圖示,然後選取設定。
- 按一下 AgentBuilder API 金鑰,然後按一下新增。
- 為您的金鑰命名,然後按一下建立 API 金鑰。
- 複製 API 金鑰並安全儲存。
如果您使用 --backend-only=true 提供FLOW,您無法在 AgentBuilder 設定中建立 API 金鑰,因為前端沒有運行。
在這種情況下,您必須使用 AgentBuilder CLI 建立 API 金鑰。
-
AgentBuilder 團隊建議啟用認證出於安全原因,以防止未經授權建立 API 金鑰和超級使用者,特別是在生產環境中。 如果未啟用認證 (
LANGFLOW_AUTO_LOGIN=True),所有使用者實際上是超級使用者,他們可以使用 AgentBuilder CLI 建立 API 金鑰。 -
使用
langflow api-key建立 API 金鑰:_10uv run langflow api-key使用 AgentBuilder CLI 建立的所有 API 金鑰都具有超級使用者權限,因為命令需要超級使用者認證,而 AgentBuilder API 金鑰採用建立它們的使用者的權限。
使用 AgentBuilder API 金鑰
要認證 AgentBuilder API 請求,請將您的 AgentBuilder API 金鑰作為 x-api-key 標頭或查詢參數傳遞。
- HTTP 標頭
- 查詢參數
_10curl -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": {}}'
_10curl -X POST \_10 "http://$LANGFLOW_SERVER_ADDRESS/api/v1/run/$FLOW_ID?x-api-key=$LANGFLOW_API_KEY" \_10 -H "Content-Type: application/json" \_10 -d '{"inputs": {"text":""}, "tweaks": {}}'
有關形成 AgentBuilder API 請求的更多資訊,請參閱開始使用 AgentBuilder API 和使用 AgentBuilder API 觸發FLOW。
追蹤 API 金鑰使用情況
預設情況下,AgentBuilder 通過您的 AgentBuilder 資料庫 中的 total_uses 和 last_used_at 記錄追蹤 API 金鑰使用情況。
要停用 API 金鑰追蹤,請在您的 AgentBuilder 環境變數 中設定 LANGFLOW_DISABLE_TRACK_APIKEY_USAGE=True。
這可以幫助避免高並發期間的資料庫爭用。
撤銷 API 金鑰
要撤銷和刪除 API 金鑰,請執行以下操作:
- 在 AgentBuilder 標頭中,按一下您的個人資料圖示,然後選取設定。
- 按一下 AgentBuilder API 金鑰。
- 選取您要刪除的金鑰,然後按一下 刪除。
此動作會立即使金鑰失效,並防止再次使用。
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_SUPERUSER和LANGFLOW_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=True 和 LANGFLOW_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 伺服器的超級使用者的使用者名稱和密碼。
_10LANGFLOW_SUPERUSER=administrator_10LANGFLOW_SUPERUSER_PASSWORD=securepassword
如果 LANGFLOW_AUTO_LOGIN=False,則需要這些變數。
否則,它們不相關。
當您啟動啟用認證的 AgentBuilder 伺服器時,如果需要這些變數但未設定,則 AgentBuilder 使用預設值 langflow 和 langflow。
當使用 AgentBuilder CLI 命令 langflow superuser 時,這些預設值不適用。
LANGFLOW_SECRET_KEY
此環境變數儲存用於加密敏感資料(如 API 金鑰)的秘密金鑰。 AgentBuilder 使用 Fernet 程式庫進行秘密金鑰加密。
如果沒有提供秘密金鑰,AgentBuilder 會自動產生一個。
但是,您應該在生產環境中產生並明確設定自己的金鑰。 這對於多實例部署(如 Kubernetes)特別重要,以確保跨實例的一致加密。
要為 LANGFLOW_SECRET_KEY 產生秘密加密金鑰,請執行以下操作:
-
運行命令以產生並複製秘密到剪貼簿。
- macOS 或 Linux
- Windows
-
macOS:產生秘密金鑰並複製到剪貼簿:
_10python3 -c "from secrets import token_urlsafe; print(f'LANGFLOW_SECRET_KEY={token_urlsafe(32)}')" | pbcopy -
Linux:產生秘密金鑰並複製到剪貼簿:
_10python3 -c "from secrets import token_urlsafe; print(f'LANGFLOW_SECRET_KEY={token_urlsafe(32)}')" | xclip -selection clipboard -
Unix:產生秘密金鑰並列印到終端機以手動複製:
_10python3 -c "from secrets import token_urlsafe; print(f'LANGFLOW_SECRET_KEY={token_urlsafe(32)}')"
-
產生秘密金鑰並複製到剪貼簿:
_10python -c "from secrets import token_urlsafe; print(f'LANGFLOW_SECRET_KEY={token_urlsafe(32)}')" -
產生秘密金鑰並列印到終端機以手動複製:
_10_10# 或只列印_10python -c "from secrets import token_urlsafe; print(f'LANGFLOW_SECRET_KEY={token_urlsafe(32)}')"
-
將值貼上到您的
.env檔案:_10LANGFLOW_SECRET_KEY=dBuu...2kM2_fb如果您在 Docker 上運行 AgentBuilder,請在
docker-compose.yml檔案中從您的.env檔案引用LANGFLOW_SECRET_KEY,如下所示:_10environment:_10- LANGFLOW_SECRET_KEY=${LANGFLOW_SECRET_KEY}
LANGFLOW_NEW_USER_IS_ACTIVE
當 LANGFLOW_NEW_USER_IS_ACTIVE=False(預設)時,超級使用者必須明確啟用新使用者的帳戶,然後他們才能登入視覺編輯器。
超級使用者也可以根據需要停用使用者的帳戶。
當 LANGFLOW_NEW_USER_IS_ACTIVE=True 時,新使用者帳戶會自動啟用。
_10LANGFLOW_NEW_USER_IS_ACTIVE=False
只有超級使用者可以管理 AgentBuilder 伺服器的使用者帳戶,但只有在您的伺服器啟用認證時,使用者管理才重要。 更多資訊請參閱啟動啟用認證的 AgentBuilder 伺服器。
LANGFLOW_CORS_*
跨來源資源共享 (CORS) 配置控制當您的 AgentBuilder 前端和後端從不同來源提供服務時,如何處理認證憑證。
以 下 LANGFLOW_CORS_* 環境變數可用:
| 變數 | 格式 | 預設 | 描述 |
|---|---|---|---|
LANGFLOW_CORS_ALLOW_CREDENTIALS | 布林值 | True | 是否允許在 CORS 請求中包含憑證,例如 cookie 和授權標頭。 |
LANGFLOW_CORS_ALLOW_HEADERS | List[String] 或 String | * | CORS 請求允許的標頭。以逗號分隔的標頭列表,或使用 * 允許所有標頭。 |
LANGFLOW_CORS_ALLOW_METHODS | List[String] 或 String | * | CORS 請求允許的 HTTP 方法。以逗號分隔的方法列表,或使用 * 允許所有方法。 |
LANGFLOW_CORS_ORIGINS | String | * | 允許的 CORS 來源。以逗號分隔的來源列表,或使用 * 代表所有來源。 |
預設配置啟用 CORS 憑證並使用萬用字元 (*) 允許所有來源、標頭和方法:
_10LANGFLOW_CORS_ORIGINS=*_10LANGFLOW_CORS_ALLOW_CREDENTIALS=True_10LANGFLOW_CORS_ALLOW_HEADERS=*_10LANGFLOW_CORS_ALLOW_METHODS=*
AgentBuilder 的預設 CORS 設定在生產環境中可能是一個安全風險,因為任何網站都可以向您的 AgentBuilder API 發出請求,並且任何網站都可以在跨來源請求中包含憑證,包括認證 cookie 和授權標頭。
在生產部署中,在 LANGFLOW_CORS_ORIGINS 中指定確切的來源。
如果需要,您也可以指定允許的標頭和方法。例如:
_10LANGFLOW_CORS_ORIGINS=https://yourdomain.com,https://app.yourdomain.com_10LANGFLOW_CORS_ALLOW_CREDENTIALS=True_10LANGFLOW_CORS_ALLOW_HEADERS=Content-Type,Authorization_10LANGFLOW_CORS_ALLOW_METHODS=GET,POST,PUT
啟動啟用認證的 AgentBuilder 伺服器
本節向您展示如何使用認證環境變數部署啟用認證的 AgentBuilder 伺服器。 這涉及停用自動登入、設定超級使用者憑證、產生秘密加密金鑰以及啟用使用者管理。
對於 AgentBuilder 暴露到共享或公共網路的任何部署,或多個使用者存取相同 AgentBuilder 伺服器的部署,建議使用此配置。
啟用認證後,所有使用者必須使用有效憑證登入視覺編輯器,並且 API 請求需要使用 AgentBuilder API 金鑰進行認證。 此外,您必須以超級使用者身份登入才能管理使用者和建立具有超級使用者權限的 AgentBuilder API 金鑰。
啟動 AgentBuilder 伺服器
-
使用以下變數建立
.env檔案:_10LANGFLOW_AUTO_LOGIN=False_10LANGFLOW_SUPERUSER=_10LANGFLOW_SUPERUSER_PASSWORD=_10LANGFLOW_SECRET_KEY=_10LANGFLOW_NEW_USER_IS_ACTIVE=False_10LANGFLOW_ENABLE_SUPERUSER_CLI=False您的
.env檔案可以有其他環境變數。 此示例專注於認證變數。 -
將
LANGFLOW_SUPERUSER和LANGFLOW_SUPERUSER_PASSWORD設定為您所需的超級使用者憑證。對於一次性測試,您可以使用基本憑證,如
administrator和password。 在真正的開發和生產環境中,建議使用強大、安全儲存的憑證。 -
建議:產生並設定
LANGFLOW_SECRET_KEY以加密敏感資料。如果您沒有設定秘密金鑰,AgentBuilder 會自動產生一個,但不建議在生產環境中使用。
有關產生和設定秘密金鑰的說明,請參閱
LANGFLOW_SECRET_KEY。 -
使用填充的變數儲存您的
.env檔案。例如:_10LANGFLOW_AUTO_LOGIN=False_10LANGFLOW_SUPERUSER=administrator_10LANGFLOW_SUPERUSER_PASSWORD=securepassword_10LANGFLOW_SECRET_KEY=dBuu...2kM2_fb_10LANGFLOW_NEW_USER_IS_ACTIVE=False_10LANGFLOW_ENABLE_SUPERUSER_CLI=False -
使用您的
.env檔案中的配置啟動 AgentBuilder:_10uv run langflow run --env-file .env使用
.env檔案啟動 AgentBuilder 會自動將您認證為LANGFLOW_SUPERUSER和LANGFLOW_SUPERUSER_PASSWORD中設定的超級使用者。 如果您沒有明確設定這些變數,系統自動登入的預設值是langflow和langflow。 -
驗證伺服器正在運行。預設位置是
http://localhost:7860。
接下來,您可以為您的 AgentBuilder 伺服器新增使用者以與他人合作處理FLOW。
以管理員身份管理使用者
-
要完成首次以超級使用者身份登入,請前往
http://localhost:7860/login。如果您沒 有使用預設位置,請將
localhost:7860替換為您的伺服器地址。 -
使用您在
.env中設定的超級使用者憑證登入 (LANGFLOW_SUPERUSER和LANGFLOW_SUPERUSER_PASSWORD)。 -
要管理伺服器上的使用者,請導航到
/admin,如http://localhost:7860/admin,按一下您的個人資料圖示,然後按一下管理頁面。作為超級使用者,您可以新增使用者、設定權限、重設密碼和刪除帳戶。
-
要新增使用者,按一下新使用者,然後完成使用者帳戶表單:
- 輸入使用者名稱和密碼。
- 要立即啟用帳戶,請選取啟用。非啟用使用者無法登入或存取他們在變成非啟用之前建立的 Flow。
- 如果您不希望使用者具有完整的管理權限,請取消選取超級使用者。
- 按一下儲存。新使用者會出現在管理頁面中。
-
要測試新使用者的存取權,請登出 AgentBuilder,然後使用新使用者的憑證登入。
嘗試存取
/admin頁面。 如果新使用者不是超級使用者,您會被重新導向到/flows頁面。