跳至內容

驗證{#authentication}

要與伺服器互動,CLI 需要使用 bearer authentication 來驗證請求。CLI 支援以使用者、帳號或使用 OIDC 令牌進行驗證。

身為使用者{#as-a-user}#

在本機使用 CLI 時,我們建議您以使用者身份進行驗證。要以使用者身份驗證,您需要執行以下指令:

bash
tuist auth login

該指令會帶您經過網頁式驗證流程。驗證完成後,CLI 會在~/.config/tuist/credentials 下儲存一個長效的刷新令牌和一個短效的存取令牌。該目錄中的每個檔案代表您驗證的網域,預設應為tuist.dev.json 。該目錄中儲存的資訊相當敏感,因此請務必妥善保管

CLI 在向伺服器提出要求時會自動查詢憑證。如果存取權限已過期,CLI 會使用刷新權限來取得新的存取權限。

OIDC 代幣{#oidc-tokens}#

對於支援 OpenID Connect (OIDC) 的 CI 環境,Tuist 可以自動進行驗證,而不需要您管理長期保密資訊。在支援的 CI 環境中執行時,CLI 會自動偵測 OIDC 令牌提供者,並將 CI 提供的令牌交換為 Tuist 存取令牌。

支援的 CI 提供者{#supported-ci-providers}#

  • GitHub 動作
  • CircleCI
  • Bitrise

設定 OIDC 驗證{#setting-up-oidc-authentication}#

  1. 將您的套件庫連接到 Tuist: 按照 GitHub 整合指南,將您的 GitHub 套件庫連接到 Tuist 專案。

  2. 執行 tuist auth login :在您的 CI 工作流程中,在任何需要驗證的指令之前執行tuist auth login 。CLI 會自動偵測 CI 環境,並使用 OIDC 進行驗證。

請參閱 Continuous Integration 指南,以瞭解特定提供商的配置範例。

OIDC 令牌範圍{#oidc-token-scopes}#

OIDC 原始碼授權給ci scope group,可存取與儲存庫相連的所有專案。有關ci 範圍包括的詳細資訊,請參閱 範圍群組

Security Benefits

OIDC 驗證比長期使用的權杖更安全,因為:

  • 無須輪換或管理秘密
  • 代幣的有效期很短,而且只適用於個別工作流程的執行
  • 驗證與您的儲存庫身分掛鉤

帳戶代幣{#account-tokens}#

對於不支援 OIDC 的 CI 環境,或當您需要對權限進行精細控制時,您可以使用帳戶令牌。帳戶令牌可讓您精確指定令牌可以存取的範圍和專案。

建立帳戶標記{#creating-an-account-token}#

bash
tuist account tokens create my-account \
--scopes project:cache:read project:cache:write \
--name ci-cache-token \
--expires 1y

指令接受下列選項:

選項 說明
-範圍 必填。以逗號分隔的範圍清單,以授予權標。
--名稱 必須填寫。令牌的唯一識別碼(1-32 個字元,僅限字母、數字、連字符號及底線)。
--到期 可選擇。令牌的到期時間。使用格式如30d (天)、6m (月),或1y (年)。如果未指定,令牌永不過期。
--項目 限制令牌存取特定專案句柄。如果未指定,令牌可存取所有專案。

可用範圍{#available-scopes}#

範圍 說明
帳戶:成員:讀取 讀取帳戶成員
account:members:write 管理帳戶成員
帳號:註冊表:讀取 從 Swift 套件註冊表讀取
account:registry:write 發佈至 Swift 套件註冊表
專案:預覽:閱讀 下載預覽
project:previews:write 上傳預覽
project:admin:read 讀取專案設定
project:admin:write 管理專案設定
專案:快取:讀取 下載快取的二進位檔
project:cache:write 上傳快取的二進位檔
project:bundles:read 檢視束裝產品
project:bundles:write 上傳束裝
project:tests:read 讀取測試結果
project:tests:write 上傳測試結果
專案:建置:讀取 閱讀建立分析
project:builds:write 上傳建立分析
專案:執行:讀取 讀取指令執行
project:runs:write 建立與更新指令執行

範圍群組{#scope-groups}#

作用域群組提供了一種方便的方式,可以使用單一識別碼授予多個相關的作用域。當您使用作用域群組時,它會自動展開以包含它所包含的所有個別作用域。

範圍組 包含的鏡頭
ci project:cache:write,project:previews:write,project:bundles:write,project:tests:write,project:builds:write,project:runs:write

持續整合 (CI){#continuous-integration-ci}#

對於不支援 OIDC 的 CI 環境,您可以使用ci 範圍群組建立帳號令牌,以驗證您的 CI 工作流程:

bash
tuist account tokens create my-account --scopes ci --name ci

這會建立一個具有典型 CI 作業 (快取、預覽、bundles、測試、建立和執行) 所需的所有權限的標記。在您的 CI 環境中,將產生的標記儲存為秘密,並設定為TUIST_TOKEN 環境變數。

管理帳戶代幣{#managing-account-tokens}#

列出帳戶的所有代幣:

bash
tuist account tokens list my-account

以名稱撤銷權限:

bash
tuist account tokens revoke my-account ci-cache-token

使用帳戶代幣{#using-account-tokens}#

帳號代碼預期會定義為環境變數TUIST_TOKEN

bash
export TUIST_TOKEN=your-account-token
When To Use Account Tokens

需要時使用帳戶代用幣:

  • 在不支援 OIDC 的 CI 環境中進行驗證
  • 對於令牌可執行的操作進行細粒度控制
  • 可存取帳戶內多個專案的標記
  • 自動過期的限時代用幣