理解 OpenID Connect (OIDC) 中的重定向 URI 和授權碼流程
讓我們仔細看看重定向 URI,因為它是 OIDC 認證過程中的關鍵安全組件。
讓我們仔細看看重定向 URI,因為它是 OIDC 認證過程中的關鍵安全組件。
重定向 URI,也稱為回覆 URL,是 OIDC 認證過程中的關鍵安全組件。它指定了通過 OIDC 提供者成功登入後用戶被引導至的 URL。更重要的是,應用程式在此接收獲得令牌所需的授權碼。
查看 重定向 URI wiki 以獲取更多詳情。
授權碼流程(在 OAuth 2.0 RFC 6749 第 4.1 節 定義)是 OIDC 的基本驗證方法。它涉及用授權碼交換訪問令牌和可選的刷新令牌。此流程適合能夠安全維護客戶端密鑰的應用程式,例如服務器端 Web 應用程式。
查看 授權碼流程 wiki 以獲取更多詳情。
在授權碼流程中,重定向 URI 是 OIDC 提供者在用戶成功驗證後傳送授權碼的目的地。它必須預先註冊到 OIDC 提供者,以確保安全並防止未經授權的重定向。
以下是如何在 Logto Console 註冊重定向 URI:

當啟動登入時:
client_id、response_type、scope 和 redirect_uri。redirect_uri,並作為查詢參數包含授權碼。OIDC 提供者會驗證 redirect_uri 是否與預註冊的 URI 清單相符。如果不相符,將返回 invalid_redirect_uri 錯誤,藉此增強安全性並防止未經授權的端點接收令牌。
在現實用例中,一個常見的最佳實踐是聲明專用的 "Callback" 頁面,並關聯一個允許從外部直接訪問的路由/深層鏈接。該鏈接應作為重定向 URI 使用。
假設你有一個運行在 https://my-app.com 的單頁面 Web 應用程式,那麼通常重定向 URI 會被聲明為 https://my-app.com/callback
或者如果是原生移動應用程式,那麼重定向 URI 通常以自定義方案開始,例如 com.company://myapp/callback
其他最佳實踐包括:
要處理返回到您的 redirect_uri 的授權碼,請遵循以下步驟:
提取授權碼:從重定向 URI 的查詢字符串中檢索代碼參數。
用授權碼交換令牌:組合一個 POST 請求到 OIDC 提供者的令牌端點,包括:
client_id:您的應用程式在 OIDC 提供者中的 IDcode:從重定向 URI 接收到的授權碼code_verifier:在客戶端生成的隨機字符串redirect_uri:授權請求中使用的相同 URIgrant_type:授權類型,通常為 authorization_codeLogto SDK 是用特定編程語言或框架編寫的開發工具包,例如 Logto React SDK、Next.js SDK 和 Swift SDK。通過僅調用一兩個函數,使用 SDK 可以大大簡化流程。
以下是使用 Logto 官方 React SDK 的 React "Callback" 元件範例:
SDK 集成指南可在 Logto 快速入門文檔 中找到。
理解 OIDC 中的重定向 URI 與授權碼流程對於保護和優化你的認證過程至關重要。通過註冊可信的重定向 URI 並有效地處理登入回調,你可以確保用戶無縫且安全的體驗,同時通過 Logto SDK 簡化開發工作。