Logo Logo
GitHub Designed by Logto

什麼是認證請求 (Authentication request)?

雖然認證請求 (Authentication request) 的意義可能因上下文而異,我們將專注於 OpenID Connect (OIDC) 規範中的定義。在 OIDC 中,認證請求 (Authentication request) 是向授權伺服器 (Authorization Server) 發出的用於認證用戶的 授權請求 (Authorization request)

標準定義似乎很混亂,因為使用了類似的術語,比如 “授權請求 (Authorization Request)“。這是因為 OIDC 建立在主要設計用於授權的 OAuth 2.0 之上,並繼承了 OAuth 2.0 的術語,並擴展以支持認證。

為了澄清,讓我們為定義添加一些上下文:

一個 (OpenID Connect) 認證請求 (Authentication request) 是發送給 (OpenID Connect 授權) 伺服器的 (OAuth 2.0 授權) 請求,用於認證用戶。

它變得更長了!現在讓我們去掉所有的括號:

認證請求 (Authentication request) 是發送給伺服器的用於認證用戶的請求。

去掉所有附加屬性後,定義變得簡單明瞭。以下是術語的分解:

在接下來的部分中,我們將使用 “OpenID 供應商 (OP)” 來指代支持 OIDC 的授權伺服器。

認證請求 (Authentication request) 如何運作?

當一個客戶端應用程序想要認證用戶時,它會向 OpenID 供應商 (OP) 發起一個認證請求 (Authentication request)。如前所述,認證請求 (Authentication request) 在 OAuth 2.0 中也是一個授權請求,因此,一些 OAuth 2.0 授權類型 (流) 可以用來完成認證過程。

OIDC 定義了支持認證的三種授權類型 (流):

  1. 授權碼流程 (Authorization code flow) :最推薦的認證流。通常與 交換驗證碼用的驗證密鑰 (Proof Key for Code Exchange,PKCE) 一起使用以提高安全性,適合大多數應用程式。
  2. 隱式流程 (Implicit flow) :由於安全問題而在 OAuth 2.1 中被棄用的簡化流。
  3. 混合流程 (Hybrid Flow) :授權碼流程與隱式流的組合。

認證請求 (Authentication request) 是 OIDC 認證流程中的第一步。具體要包括的參數和要遵循的步驟取決於你選擇的流。點擊上述流名稱以了解更多關於每種流的訊息。

以下是使用授權碼流程的認證請求 (Authentication request) 的簡化範例:

一旦客戶端獲得令牌,它可以使用這些令牌(例如, 存取權杖 (Access token) )代表用戶訪問受保護的資源(例如,API)。

認證請求 (Authentication request) 中的關鍵參數

以下是認證請求 (Authentication request) 中的一些關鍵參數:

  • response_type:客戶端期望從授權伺服器獲得的回應類型。可以是 code 用於授權碼流程,id_token 用於隱式流,或者 code id_token 用於混合流。
  • client_id:OpenID 供應商 (OP) 發出的客戶端標識符。
  • redirect_uri:授權伺服器在認證請求 (Authentication request) 完成後會重定向用戶代理的 URI。
  • scope:請求的 範圍 (許可)用於 ID token 存取權杖 (Access token)
  • resource:指定請求資源的 資源指示器 (Resource indicator) 的可選參數。授權伺服器需要支持 RFC 8707 來使用此參數。

注意,上述參數並非詳盡。在進行認證請求 (Authentication request) 之前,你應參考你所使用的特定流的完整參數列表。

另見