繁體中文(香港)
  • 驗證
  • cli
  • ai

什麼是 CLI 驗證以及現今常用的方法

CLI 驗證正快速成為現代開發者工作流程的核心。Logto 支援所有主流的 CLI 驗證方法。

Guamian
Guamian
Product & Design

Stop wasting weeks on user auth
Launch secure apps faster with Logto. Integrate user auth in minutes, and focus on your core product.
Get started
Product screenshot

現代開發者的工作流程極度依賴命令列工具。無論是部署雲端服務、執行 AI 代理還是管理基礎設施,CLI 已成為工程師最強大的介面之一。但每個 deploy、auth 或 run 指令背後都有一個關鍵需求:

CLI 必須知道你是誰。

這就是 CLI 驗證 發揮作用的地方。

本文將逐步說明什麼是 CLI 驗證、為什麼重要,以及當前開發者生態圈中常見的驗證方法。

什麼是 CLI 驗證?

CLI 驗證(命令列介面驗證) 指的是 CLI 用來確認執行指令的人員或服務的身份的方法。

這讓 CLI 能夠:

  • 驗證用戶身份
  • 獲取短效與長效憑證(token)
  • 安全存取後端 API
  • 維持持久的登入狀態

如果說瀏覽器依賴 cookies 與 session,CLI 則依賴 本地儲存的令牌,再結合 OAuth 或其他標準化驗證流程。

簡單來說,CLI 驗證讓終端機自己擁有登入系統,在安全下能以用戶身份執行操作。

為什麼需要 CLI 驗證

CLI 驗證解決了多個現實問題:

  1. 身份認證 — API 後端需要知道誰在下指令。
  2. 安全性 — 開發者不應直接把祕鑰貼進終端機或腳本。
  3. 令牌生命周期管理 — CLI 需要短效、可自動續期的存取令牌。
  4. 用戶便利性 — 驗證後,開發者不該一直重複登入。
  5. 自動化支援 — CI/CD 等流程需要適合機器的令牌。

隨著 CLI 功能日益強大(尤其是 AI 工具),穩健且安全的驗證需求變得更加重要。

常見的 CLI 驗證方法

不同平台因安全性、用戶體驗與架構設計上的考量,會採用不同的 CLI 驗證方法。以下是現今最廣泛使用的幾種方法。

1. OAuth 2.0 裝置碼流程(最常見的方法)

這是業界標準流程,被以下工具廣泛採用:

  • GitHub CLI
  • AWS SSO
  • Azure CLI
  • Vercel CLI
  • OpenAI CLI
  • 許多 AI 原生運行環境

運作方式

  1. CLI 呼叫身份提供者以獲得裝置碼。
  2. 用戶被提示訪問一個網頁並輸入簡短驗證碼。
  3. 瀏覽器處理登入(包含密碼、密碼金鑰 Passkey、SSO)。
  4. 獲得許可後,CLI 取得(存取 + 續期)令牌。
  5. CLI 將令牌儲存於本地,後續指令直接使用。

為何普及

  • 可於本機、SSH、容器等環境工作。
  • 高安全性。
  • 無需在終端機輸入密碼。
  • 支援多重驗證、Passkey 與企業 SSO。

裝置碼流程是現代開發者工具的預設值,因為它有效妥協安全、彈性與用戶體驗。

2. Localhost Redirect OAuth 流程

用於需要更順暢登入體驗的工具。

運作方式

  1. CLI 在本地隨機埠口啟動小型伺服器。
  2. 自動開啟瀏覽器。
  3. 登入後,身份提供者重導回 http://localhost:xxxx/callback。
  4. CLI 接收 OAuth 令牌並關閉本地伺服器。

優點

  • 極佳用戶體驗。
  • 無需複製貼上步驟。

缺點

  • 不適用於遠端 shell 或雲端環境。
  • 需能綁定本地主機端口。

常見於 GUI 友善的 CLI 或需「一鍵登入」的開發工具。

3. API 金鑰 / 個人存取令牌(舊式但仍常見)

有些 CLI 允許開發者貼上 API 金鑰或個人存取令牌。

範例

優點

  • 簡單。
  • 易於自動化。

缺點

  • 安全性較低。
  • 無 M FA。
  • 難以輪換。
  • 令牌權限通常過大。

現代平台多傾向淘汰這種模式或僅限機器用途

4. 用戶端憑證(OAuth2 Client Credentials Flow)

這是服務間和 CI/CD 階段在無人參與下登入的標準方式

認證提供者會發給:

  • client_id
  • client_secret

服務端用這兩者換取存取令牌:

特點

  • 無需用戶參與
  • 不用瀏覽器
  • 產生短效存取令牌
  • 適用於後端對後端、CI 系統
  • 可無縫整合 OAuth2 和 RBAC 權限

這是所有身份提供者最廣泛支援的自動化驗證方法。

5. 用戶名加密碼輸入(現今罕見)

直接在 CLI 輸入憑證:

此法過時且不推薦,原因包括:

  • 密碼可能會洩漏
  • 無法支援多重驗證
  • 無法整合 SSO
  • 審計性差

現代工具幾乎不會使用,僅見於離線或舊式企業環境。

CLI 如何儲存令牌

大多數 CLI 會將令牌儲存在:

優先

  • macOS Keychain
  • Windows 資訊管理員
  • Linux 金鑰圈

備援

  • ~/.config/toolname 下加密本地檔案
  • JSON 或 TOML 設定檔

令牌必須:

  • 短效
  • 可續期
  • 可撤銷
  • 具有限定範圍與權限

設計良好的令牌生命周期是 CLI 安全的基礎。

應該用哪種方法?

如果你正在設計 CLI:

情境最佳驗證方式
本地人工登入裝置碼流程
需 GUI 的人工localhost OAuth 重導流程
CI/CD用戶端憑證流程
快速原型API 金鑰
需企業 SSO裝置碼流程

裝置碼流程是現代預設,因為可在任何地方運作並繼承瀏覽器安全性。

小結

CLI 驗證是現代命令列工具背後的身份核心。

它讓開發者能安全驗證身份、獲取 token,並和雲服務或 AI 執行環境互動,而無需暴露敏感認證資料。

常見的 CLI 驗證方法包括:

  1. OAuth 裝置碼流程
  2. Localhost OAuth 重導流程
  3. API 金鑰 / 個人存取令牌
  4. 用戶端憑證流程 適用於 CI/CD
  5. 舊式帳號密碼(現今很少見)

隨著開發工具越來越 AI 化,越多工作進駐終端機,CLI 驗證已成現代身份基礎架構的核心。Logto 支援所有重要的 CLI 驗證模式,目前也已支援裝置碼流程。

👉 開始體驗 Logto