Show HN: Legant 賦予 AI 代理受限制的權限代表您行事
Legant 是一個開源委託授權系統,允許 AI 代理在用户定義的受限範圍內代表用户操作。它基於 RFC 8693 令牌交換生成複合子/行為令牌,支持離線執行的約束策略、單調衰減權限,並提供一個完整的 OAuth 2.1/OIDC 提供者,包含多租户、SSO 和 SCIM。項目還提供多個演示和 CLI 工具,幫助快速集成。
開源委託授權系統 Legant 近日正式發佈,它旨在解決 AI 代理授權中的一個關鍵問題:如何讓 AI 代理在有限且可控的權限範圍內代表用户執行操作,同時保證安全性、可審計性和細粒度控制。與傳統的 OAuth/OIDC 服務器不同,Legant 不僅能夠驗證代理身份併發放令牌,還能精確表達複雜的授權約束,例如“此代理可以代表 Alice 操作,但僅限於提交不超過 500 美元的差旅或餐飲費用,有效期為下一小時,並且其生成的任何子代理只能擁有更少的權限”。
Legant 的核心機制基於 RFC 8693 令牌交換協議。當 AI 代理需要代表用户執行操作時,它通過該協議與 Legant 服務器交換令牌,最終獲得一個複合子/行為令牌。在這個令牌中,“子”字段代表用户身份,“行為”字段記錄代理鏈信息,從而實現代理以用户名義操作,但並非冒用用户身份。完整的委託來源(用户 → 代理 → 子代理)都編碼在令牌內部,便於審計和追溯。
約束策略是 Legant 的另一個關鍵創新點。細粒度的限制條件(如最大金額、類別、工具、資源受眾以及時間窗口等)被直接嵌入簽名令牌中。資源服務器在驗證令牌時,可以僅憑令牌自身離線執行這些策略,無需回調 Legant 服務器。這種設計顯著降低了延遲和依賴性,同時保持了權限控制的有效性。對於滾動小時速率限制,Legant 在令牌簽發時強制執行,因為該限制需要共享狀態。
權限的單調衰減特性確保安全原則:子代理的權限範圍始終小於或等於父代理。如果子代理請求更寬泛的權限或更寬鬆的約束,請求將被拒絕或自動限制為父級約束。這種自上而下的權限收縮機制有效防止了權限擴散風險。
除了核心的委託授權引擎,Legant 還是一個完整的 OAuth 2.1 和 OpenID Connect 提供者,支持授權碼流加 PKCE、客户端憑證、刷新令牌、服務發現、JWKS、內省和撤銷等功能。它內置多租户、單點登錄(SSO)和 SCIM 支持,可以作為現有身份基礎設施的補充或替代。
Legant 提供了豐富的演示套件,幫助用户快速理解其能力。這些演示包括:代理代表用户流程(agent-on-behalf-of)、混淆 deputy 問題解決(confused deputy closed)、多跳衰減(multi-hop attenuation)、模擬 Salesloft–Drift OAuth 令牌盜竊(stolen-token replay)、職責分離(segregation of duties)、Kubernetes MCP 網關等。對於企業級生產環境,Legant 還提供了基於真實基礎設施的集成演示,如 AI-SRE 在真實 kind 集羣上的運行,以及權限保留的分析助手在真實 Postgres 數據倉庫上的操作。
在部署和集成方面,Legant 採用角色分離架構。運維人員負責部署簽發服務器(運行 legant serve 和 Postgres),代理開發者構建與簽發服務器交互的應用程序代碼,資源服務器開發者只需使用 SDK 離線驗證令牌,無需數據庫或網絡回調,而用户則通過瀏覽器的同意流程管理授權。這種設計使得集成 Legant 的門檻極低——大多數場景下只需使用 Go SDK 即可。
Legant 使用 Go 語言編寫,以單一自託管二進制文件形式發佈,支持 Docker 和 Kubernetes 部署。項目處於活躍開發狀態,提供豐富的 CLI 工具用於管理授權、審計和密鑰。CLI 支持定義和檢查授權聲明(legant.grants.yaml)、簽發和撤銷令牌、審計驗證、以及保護資源服務器等操作。此外,Legant 還包含一個 Helm Charts 倉庫,便於在 Kubernetes 環境中部署。
總體而言,Legant 為 AI 代理的委託授權提供了一種安全、靈活且可審計的解決方案。其離線約束策略、單調衰減權限和完整的 OAuth 2.1 支持使其成為構建可信 AI 代理系統的有力工具。項目代碼已在 GitHub 上開源,社區可以自由使用和貢獻。