簡化 API 認證的個人存取權杖 — 更安全的 API 權杖
解釋個人存取權杖(PATs)如何運作、何時使用它們、如何在服務中支持 PAT 功能,以及它們與 API 金鑰、API 權杖、持有人權杖、OAuth 權杖和密碼之間的差異。
個人存取權杖(PATs)是用戶生成的權杖,取代了 API 呼叫的密碼。專為特定用戶設計,PATs 提供安全且受控的資源存取。
輕鬆認證。細粒度的存取控制。精簡的工作流程。 這些只是開發者和產品團隊在全球範圍內依賴個人存取權杖來提升生產力的一部分原因,無論是管理 CI/CD 管道、整合 API,還是存取工具。
想知道 PATs 如何運作、它們的優點或何時使用它們嗎?這篇指南將為你解惑。
什麼是個人存取權杖?
個人存取權杖是一種臨時且安全的身份驗證方式,讓你可以通過 API 存取個人資源和服務。它主要由開發者使用來簡化和提高如存取 API 或自動化工作流程等任務的效能。
將個人存取權杖視為 API 存取的「鑰匙」,取代了使用密碼的必要性。與密碼不同,PATs 具有特定的許可權和到期日期,確保它們僅用於預期用途,如存取用戶資料 或計費系統,而不是管理控制。
個人存取權杖的主要特點:
- 開發者友好:個人存取權杖比完整的 OAuth 工作流程更易於管理,適合腳本、自動化或 CI/CD 管道。
- 多個權杖:用戶可以生成和管理多個個人存取權杖,每一個專門用於特定的服務或目的。
- 特定於用戶的存取:不像全域 API 金鑰,個人存取權杖是與個別用戶帳戶綁定的。這意味著團隊成員可能需要為共享存取創建單獨的權杖。
- 細粒度的許可權:使用個人存取權杖,你可以定義特定範圍,只授予所需資源和操作的存取。
- 有期限的存取:個人存取權杖可以配置有效期限,減少外洩時的風險窗口。
- 輕鬆撤銷:不同於密碼,個人存取權杖可以被撤銷或重新生成,而不會危及帳戶的主憑證。
個人存取權杖 vs. 持有人權杖 vs. API 權杖
- 個人存取權杖是一種 API 權杖:個人存取權杖是一種與用戶帳戶連結的用戶級 API 權杖。它授權用戶代表系統資源訪問。PATs 比傳統 API 金鑰更安全,因為它們允許細緻控權,如限制對特定倉庫或組織的存取,並可設置過期時間以增加安全性。
- 個人存取權杖可以用作持有人權杖:持有人權杖是一種授權 API 請求的方法,通常使用 OAuth 或 JWT 等協定動態生成。個人存取權杖是一種靜態版本的持有人權杖,由用戶手動生成(例如在 GitHub 上 )。例如,在使用 GitHub PAT 進行 API 呼叫時,你會在請求標題中包括它作為
authorization: bearer <your-pat>
。在這種情況下,PAT 作為持有人權杖運行。 - API 權杖是一個廣義術語:API 權杖是一個用於身份驗證 API 請求的通用術語。它包含不同類型,如持有人權杖、OAuth 權杖和個人存取權杖。PATs 和持有人權杖只是不為 API 權杖的特定類型。
選擇你的 AuthN 和 AuthZ 機制
在採用個人存取權杖之前,瞭解它在身份驗證方法中扮演的角色至關重要。隨著多種機制的選擇,這很重要要瞭解它們如何比較。如下是一個綜合表,概述 個人存取權杖(PATs)、密碼、API 金鑰和 OAuth 權杖之間的關鍵區別,以幫助你做出明智的決策。
- **個人存取權杖:**一種輕量級的身份驗證方法,適合自動化任務或 API 存取。它提供精確、細粒度的許可權控制,確保安全和量身定制的存取。
- **密碼:**一種傳統的身份驗證方法,通過用戶界面訪問個人帳戶。它授予與帳戶所有者相同的許可權,沒有額外的細粒度設置。
- **OAuth 權杖:**授權第三方服務限制存取的最安全方法。它允許用戶定義特定存取範圍,而不暴露他們的憑證,確保安全性和靈活性。
- **API 金鑰:**通常用於自動化 API 存取,API 金鑰與服務帳戶而非個人帳戶相聯。可惜的是,它們缺乏與 PATs 或 OAuth 相同的詳細權限控權。
特點 | 密碼 | 個人存取權杖 | OAuth 權杖 | API 金鑰 |
---|---|---|---|---|
定義 | 用戶通過標識符和密碼進行身份驗證。 | 一種用於存取具有限定權限的特定資源或 API 的權杖。 | 一個系統,允許用戶在不共享憑證的情況下授予第三方應用對其數據的訪問權。例如,Google 登錄。 | 用於客戶端用於身份驗證 API 請求的唯一字符串。 |
範圍限制 | 通常授予用戶賬戶的完整訪問權限。 | 允許細粒度的權限控權。 | 允許用戶定義第三方應用可以訪問的內容。 | 通常授予對特定 API 資源的存取。無細粒度控制。 |
撤銷 | 難以撤銷而不更改密碼,影響多個服務。 | 用戶或管理員可以輕鬆撤銷。 | 可以撤銷而不影響用戶憑證。 | 可在 API 服務層面撤銷或重新生成。 |
到期 | 除非用戶更改,否則不會到期。 | 通常長時間有效,但可配置為到期。 | 訪問權杖在設置的時間後到期;刷新權杖可以延長存取。 | 通常長時間有效,但可以由 API 提供者旋轉或限制。 |
易用性 | 易於記住,但如果誤用風險很大。 | 簡單生成,用於自動化任務。 | 需要初步用戶互動,但提供安全訪問授權。 | 易於在請求中使用,但不適合作為用戶界面身份驗證。 |
最佳用途 | 客戶端用戶的基本登錄和驗證。 | 自動化、有限制的 API 資源存取和 CI/CD 管道的開發。 | 第三方應用需要有限制的用戶數據存取,而不存儲密碼。 | 後端服務、服務器對服務器通信和公共 API。 |
安全風險 | 如果被盜,將授予賬戶的完全訪問權限。 | 如果洩露,僅授予對指定資源的訪問權,可以輕易撤銷。 | 如果洩露,第三方應用可以在授權範圍內執行操作。 | 如果被盜,通常用於服務器之間的存取。 |
個人存取權杖是如何工作的?
個人存取權杖的工作方式類似於 OAuth 存取權杖,但通常是沒有用戶可讀的內容數據的字符串。當你向 GitHub 等服務進行身份驗證時,你可以生成與你的用戶帳戶綁定的 PAT 並分配特定許可權。這種權杖是使用密碼進行請求的安全替代方案 —— 例如,通過 API 存取私人倉庫。
通常,PAT 包含在請求的標題中,如以下範例所示:
通過這種方式發送 PAT,服務可以驗證你的身份,評估與權杖關聯的權限,並提供請求的數據或執行指定的操作。
如何使用個人存取權杖?
- 生成個人存取權杖:首先通過你正在使用的平台創建個人存取權杖,並選擇特定範圍來定義其存取權限(範圍)。
- 認證 API 請求:準備好你的個人存取權杖後,使用它來認證所需安全存取的服務請求。將權杖作為持有人權杖包含在你的 API 請求的認證標頭中。
- 撤銷個人存取權杖:如果你需要停用你的權杖,只需通過平台的身份驗證設置撤銷它。一旦撤銷,使用該權杖的任何 API 請求將立即被拒絕。
什麼時候應該使用個人存取權杖?
個人存取權杖在需要為 API 提供安全、開發者友好且有範圍的存取時表現出色。以下是一些理想的使用案例:
- 自動化任務:適用於需要從 API 獲取數據而無需開發者嵌入敏感憑證的腳本或工具。
- 細粒度權限控權:通過授予腳本或工具有限許可,比如對特定倉庫的存取,而不暴露完整帳戶權限。
- 臨時存取:理想於時間敏感的情況中,限制存取時長可以減少安全風險。
- 開發者的簡化存取:為個別開發者授予存取的便捷方式,不必進行完整的 OAuth 授權流程設置。
- 第三方整合:通過限制存取到特定預定義操作來優化與外部工具的功能。例如,當一家公司使用項目管理工具時,第三方整合可以允許團隊成員直接從 Slack 聊天中創建任務或更新狀態,而無需全存取項目管理工具。
自 2013 年以來,GitHub 正在推動個人存取權杖的使用,因其簡單和靈活而變得流行。許多開發者工具和 SaaS 平台支持 PATs,使其易於使用,成為開發者的首選:
-
GitHub/GitLab/Azure DevOps(開發工具):有助於自動化 CI/CD、與其他工具連接和管理代碼庫。
-
Figma(設計工具):使用 API 整合來讓設計協作更容易。
-
Atlassian Jira/Asana(專案管理):通過 API 輕鬆創建、更新或刪除任務、管理衝刺和組織專案。
我可以將個人存取權杖與其他用戶共享嗎?
簡短的回答—不,你不應該這樣做。
權杖應與個人帳戶綁定,絕不應共享。如果其他人需要存取,最好生成具有他們許可權的唯一權杖或設置用戶角色以避免安全風險。誤用權杖可能導致不當訪問、數據泄露或隱私侵犯。請保持權杖的私密性並撤銷任何你懷疑被洩露的權杖。
通過 Logto 為你的應用程序啟用個人存取權杖生成
無論你是提供 B2B 服務還是開發尖端的 AI 產品,實施開發者友好的身份驗證和授權至關重要。個人存取權杖可以為你的業務解鎖新的機會。
Logto 作為一個全面的客戶身份和存取管理(CIAM)解決方案,讓你輕鬆創建、管理和撤銷個人存取權杖。以下是你可以如何開始:
- 請前往 Logto 控制台 > 用戶管理。
- 存取特定用戶的資料來管理他們的個人存取權杖。
使用 Logto,你可以:
- 生產新的個人存取權杖。
- 管理單個用戶的多個權杖。
- 設定權杖的自訂到期日期。
- 為了更好的組織重命名權杖。
- 在不再需要時撤銷權杖。
此外,你可以通過 Logto 管理 API 讓用戶在他們的資料設置頁面自我管理他們的個人存取權杖。