繁體中文(香港)
  • GitHub
  • 機密儲存庫
  • 權杖儲存
  • OAuth
  • 社交登入

GitHub Apps vs. OAuth Apps:選擇合適的 GitHub 連接方式

比較 GitHub Apps 及 OAuth Apps 在 Logto 集成下的應用。了解安全性、權限、認證管理等關鍵差異,為你的應用選擇適合的 GitHub 認證方案。

Ran
Ran
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

當你將 GitHub 認證集成到 Logto 應用時,有兩個選擇:GitHub Apps 及 GitHub OAuth Apps。雖然兩者都可實現「以 GitHub 登入」功能,但在安全性、認證管理和 API 存取方面提供截然不同的體驗。此指南將幫助你了解主要分別,並根據實際情況作出正確選擇。

背景:通往 GitHub 集成的兩條路

Logto 現行文件會指導你設置 GitHub OAuth App 作為社交登入,這是一條更簡單直接的路線,很適合基本登入需求。不過,GitHub Apps 是官方推薦的現代做法,能帶來更強的安全性和細緻的控制權。

你可以這樣想:OAuth Apps 就像給了某人你家的總匙——被授權後即可寬泛存取。GitHub Apps 則是智能門鎖系統,為不同房間分配特定存取碼——用戶只會授權你應用所需的精確權限。

關鍵分別一覽

權限:寬泛 vs 精細

  • OAuth Apps 使用寬泛作用域——例如 repo 一旦授權即可完全控制倉庫。
  • GitHub Apps 使用精細權限——你可只申請「議題:只讀」等不涉及程式碼的權限,用戶亦可在安裝時選擇特定倉庫,而非一刀切地開放全部。

認證安全:永久 vs 有效期

  • OAuth Apps 發出的權杖(token)永不過期(除非手動吊銷),也不支援刷新機制。
  • GitHub Apps 發出的權杖效期短(約 1 小時)並支援自動刷新,對長期運行的應用更為安全。

身份:用戶 vs 機械人

  • OAuth Apps 永遠以授權者(例如 @octocat)身份動作,與其分享相同 API 配額(每小時 5,000 次請求)。
  • GitHub Apps 可獨立運作,使用自己專屬機械人身份(例如 @my-app[bot]),API 限額隨用量擴展——非常適合自動化用途。

存取控制:全有全無 vs 可選擇

  • OAuth Apps 一次授權後就擁有所有資源的存取權。
  • GitHub Apps 允許用戶安裝 app 並選擇特定倉庫,亦能收取權限變動的 webhook 通知——提供更佳透明度與控制性。

持續性:依賴用戶 vs 獨立於用戶

  • OAuth Apps 綁定於授權用戶——若該開發者失去權限或離開組織,app 就會失效。
  • GitHub Apps 即使安裝者離開組織亦不受影響——自動化和集成服務不中斷運行。

如何選擇?

GitHub Apps 及 OAuth Apps 均可順利配合 Logto 社交連接器使用。Logto 的 Secret Vault 安全儲存兩種集成的 token,但各自帶來不同體驗:

用 OAuth Apps 實現基礎社交登入

若你單純需要用戶認證(以 GitHub 登入),而不打算後續調用 GitHub API,OAuth App 最方便快捷:

  • 設定簡單:用戶授權 OAuth App 即可用 GitHub 登入。
  • 權杖具長期效期(不需刷新):Logto 可把 access token 存於 Secret Vault,無續期流程——權杖直至被廢止前一直有效。
  • 適合僅驗證用戶身份(如電郵、名字、頭像),不需自動化 API 操作的情境。

為什麼選它:開發原型或只需登入及偶爾同步用戶資料的 app,實作最快。

用 GitHub Apps 獲得深度集成

若你的應用需持續存取 GitHub API、自動任務或更嚴格安全:

  • 精細權限及倉庫選擇將存取權降至最低且可審核。
  • 權杖短效(約 1 小時),GitHub App 可支援 refresh token;啟用後,Logto 會同時儲存 access 與 refresh token,並自動續期,保證後端持續可用,無需用戶重登。
  • app 身份(機械人)有助歸屬追蹤,大量自動化時 API 配額更充裕可靠。

特別適合:

  • 代表用戶管理 GitHub 倉庫的 SaaS 平台
  • 與程式碼、議題、拉取請求互動的 AI agent
  • 需長期 API 存取的應用
  • 執行自動化任務的工具

在 Logto 設定 GitHub App

GitHub App 的設定與 OAuth App 類似,只是多了幾個關鍵細節。由 OAuth App 轉移至 GitHub App 也只需些微調整。

創建 GitHub App

  1. 前往「GitHub 設定 > Developer settings > GitHub Apps」

  2. 按「New GitHub App」

  3. 配置:

    • GitHub App 名稱: 你的 app 獨一無二的標識
    • 主頁網址: 你的應用網站
    • Callback URL: 你的 Logto 連接器 callback URI(與 OAuth App 相同)
    • 安裝期間請求用戶授權(OAuth): 請啟用
    • Webhook: 視乎需要選用
    • 權限: 選擇精細的權限(如「議題:只讀」)
    • 用戶權限: 若需代表用戶操作,請新增帳戶權限
  4. 產生 client secret(與 OAuth App 類似)

integrate-github-apps.png

在 Logto 配置

Logto 連接器的配置基本一致:

  1. 輸入 GitHub App 的 Client ID
  2. 輸入 Client secret
  3. 若需呼叫 GitHub API,請啟用**「存儲權杖以支援持續 API 存取」**
  4. 關鍵差異 - Scopes:
    • 不同於 OAuth Apps 需在 Logto 輸入 scope,GitHub App 的權限是在 GitHub App 設定內選擇的。
    • 所以在 Logto 直接留空 scope 欄位即可。
  5. 請求 refresh token(可選)
    • 在 Logto 的 scope 欄加 offline_access 可啟用 refresh token
    • GitHub 將會自動發放 refresh token,Logto 會存儲兩款 token 並自動輪換,確保權杖持續有效
    • 注意:OAuth Apps 不支援 refresh token,因為 access token 永不過期,所以 offline_access 並不適用。在 GitHub Apps 集成下則不同。

integrate-github-connector-in-logto.png

結論

OAuth Apps 雖然依然可作基本認證用途,但 GitHub Apps 代表未來的集成趨勢。它們通過有效期限、精細權限模型及更佳用戶控制,帶來極致安全保障。

對 Logto 用戶而言,兩者均可用於社交連接器。選擇權視乎你的具體需求:

  • 只需認證可選用 OAuth Apps
  • 需要 API 存取、自動化或提升安全隨時切換到 GitHub Apps

記住——Logto 的 Secret Vault 及自動權杖續期功能令 GitHub App 的 token 管理變得同 OAuth Apps 一樣簡單,而安全性更上一層樓。無論你是開發 AI 編碼助手、專案管理平台或開發者利器,現在你已掌握選擇 Logto GitHub 集成的正確知識!

準備開始?馬上參考 Logto 的 GitHub 連接器 ,即日開展 GitHub 認證集成。

延伸資源