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

當開始登入時:
client_id、response_type、scope 和 redirect_uri。redirect_uri,並作為查詢參數包含授權碼。OIDC 提供者會驗證 redirect_uri 是否在預註冊的 URI 列表中。如果不匹配,將返回一個 invalid_redirect_uri 錯誤,以通過防止未經授權的端點接收令牌來加強安全性。
在真實情況中,一個常見的最佳實踐是聲明一個專用的"回調"頁面並關聯允許外部直接訪問的路由 / 深層鏈接。此鏈接應用作重定向 URI。
假設你有一個單頁網頁應用程式,運行在 https://my-app.com,那麼通常將重定向 URI 聲明為 https://my-app.com/callback
或者如果它是一個原生移動應用程式,那麼重定向 URI 通常以自定義方案開頭,例如 com.company://myapp/callback
其他最佳實踐包括:
要處理返回到你的 redirect_uri 的授權碼,請按照以下步驟:
提取授權碼:從重定向 URI 的查詢字符串中檢索代碼參數。
用授權碼交換令牌:組合一個發往 OIDC 提供者令牌端點的 POST 請求,包括:
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 簡化你的開發工作。