為什麼你的產品需要 OAuth 2.0 和 OIDC —— 尤其是在 AI 時代
了解為什麼 OAuth 2.0 和 OpenID Connect (OIDC) 對現代驗證很重要,特別是在 AI、代理和智能設備的時代。本文涵蓋了關鍵用例,何時實施這些協議,及如何選擇適合的身份驗證提供者以達到可擴展性和安全性。
從一開始,Logto 就建立在對開放標準的堅定信念之上。我們選擇遵循 OIDC、OAuth 2.0 和 SAML 等協議——不僅因為它們被廣泛使用,還因為它們代表了業界可信賴的成熟安全做法。安全一直是我們的優先事項。我們也始終忠實於開源精神,並遵循 客戶身份管理 和現代身份驗證的最佳實踐。
但我們也在過程中學到了一些東西:
對於每個人來說,OAuth 2.0 和 OIDC 都不是輕而易舉的。對於不熟悉這些協議的開發者來說,這些概念可能會顯得陌生,有時甚至會感到難以理解。這給我們帶來了真正的挑戰,因為我們需要在不妥協安全性的情況下簡化開發者的體驗。
有兩點特別明顯:
- 即使我們非常努力地使集成盡可能順暢,理解 ID 令牌、訪問令牌以及它們如何工作的基本概念仍然存在學習曲線。
- 我們經常被問的一個問題是:「我可以跳過登錄頁面的重定向嗎?」不幸的是,重定向是 OIDC 工作原理的一部分,是安全驗證所必需的。
來自我們 Discord 用戶的常見問題(為了隱私已遮擋他們的 ID 和頭像)。
每個決策都有取捨——但有時一些早期的選擇在新用例出現時會特別有價值。現在我們正進入一個新的時代:AI 時代。
在本文中,我將探討何時你的產品應該使用 OIDC 和 OAuth 2.0,何時可能不需要它們,以及為什麼我一直提倡從一開始就採用這些開放標準——尤其是當你在建立真正的業務並選擇 CIAM 解決方案時。我還將解釋為什麼 AI 的崛起使這一決策變得比以往任何時候都更重要。
OAuth 2.0 真正做了什 麼(用一個簡單的比喻)
對於不太熟悉 OAuth 2.0 的讀者,讓我花點時間再次簡要介紹一些基本概念——以便更清楚地理解。
OAuth 2.0 是用於委派授權:OAuth 2.0 是一個業界標準的授權協議——它允許一個服務在另一個服務的資源所有者同意的情況下代表其訪問資源。
在 OAuth 場景中,使用者(資源所有者)允許客戶端應用程式在不共享密碼的情況下對 API 或資源服務器進行有限的訪問(範圍權限)。OAuth 定義了如何請求和發放客戶端可以用來調用受保護 API 的訪問令牌。與要求你的憑證來訪問另一個服務的早期應用相比(這是一個嚴重的安全風險),這是一個革命性的變革。使用 OAuth 2.0,使用者批准特定訪問,客戶端獲得一個令牌,其中僅包含所需的權限和持續時間——不交换密碼,大大提高了安全性。
想像 OAuth 2.0 就像入住酒店。
你(使用者)是房間的主人(你的數據)。但不是將自己的房間鑰匙(你的密碼)交給某人,而是去前台請求一張臨時訪問卡(訪問令牌),只允許你的訪客或朋友進入健身房或游泳池——而不是整個房間。
酒店工作人員(OAuth 系統)發放這張有限的卡片,並附有具體規則:
- 只能用於健身房(特定資源)。
- 有效期較短。
- 不會讓任何人進入你的房間。
這樣一來,你不必交出你的主鑰匙——系統即使有人拿到了那張有限卡片仍然保持安全。
讓我們再看一個例子。OAuth 2.0 在社交登錄情況中被廣泛使用。
假設你正在註冊新應用如 Notion,而不是創建新的用戶名和密碼,你點擊 「用 Google 繼續」
在 OAuth 2.0 背後,以下是發生的事情:
-
你被重定向到 Google 的登錄頁面,在那裡登錄(如果還未登錄)。
-
Google 問:
「你允許此應用查看你的基本資料和電子郵件地址嗎?」
-
你點擊「允許」,然後 Google 發送給應用一個訪問令牌。
-
應用使用該 令牌 :
- 確認你的 身份 (通過你的電子郵件和資料信息)。
- 創建或登錄一個賬戶——從未看過你的 Google 密碼。
OIDC 真正做了什麼(用一個簡單的比喻)
現在讓我們來看看 OIDC —— 一個更新和更先進的標準。OpenID Connect 旨在進行身份和驗證:它是在 OAuth 2.0 之上構建的一個 驗證 層。雖然 OAuth 2.0 本身不告訴應用程序使用者是誰(它只涉及訪問令牌和範圍),OIDC 添加了一個標準方式來處理用戶登錄和身份。
當使用 OIDC 時,授權伺服器還充當 OpenID 提供者(一個身份提供者),其驗證用戶並發放包含有關用戶信息的 ID 令牌 (即「身份聲明」)。
簡而言之,OAuth 2.0 回答 「這個客戶端可以訪問這個資源嗎?」 而 OIDC 回答 「這個剛剛登錄的用戶是誰?」。它們讓你的應用 程序可以驗證用戶身份,然後使用授權令牌代表用戶訪問 API。
讓我們再用酒店比喻來更好地理解 OAuth 2.0 與 OIDC。
想像你正在入住酒店。
-
OAuth 2.0 就像讓酒店允許你的 朋友 代表你使用健身房和游泳池。
你去前台,給予許可,酒店給你的朋友一個 訪客通行證。
酒店並不在乎 朋友 是誰——只在乎他們被允許使用設施。
👉 這就是 OAuth: 「這個應用程序可以訪問我一些數據或服務。」
-
OIDC 就像要求酒店在允許訪問之前確認 這個人是誰。
所以你的朋友還展示了一個 身份證 —— 現在酒店知道他們的名字、身份和他們是經核實的訪客。
👉 這就是 OIDC: 「這就是這個用戶,他們已經登錄。」