關於OIDC,一種現代身份驗證協議
![](/Uploads/Article/202405/12/664094cc3fe30.jpg)
在數位時代,隨著網路服務的普及和應用生態的日益複雜,使用者身分驗證與授權機製成為了保障網路安全與隱私的關鍵。 OpenID Connect(OIDC)作為基於OAuth 2.0 協定的開放標準,為實現安全、便利的線上身分認證提供了一套全面的解決方案。本文將深入探討OIDC 的核心概念、工作流程、優勢以及應用場景,幫助讀者全面理解這項現代身分驗證協定。
一OIDC 概述
OpenID Connect(OIDC)是由OpenID 基金會開發的一種身分層協議,它建立在OAuth2.0 框架之上,旨在提供一種標準化的方式來驗證用戶身份並獲取其基本資訊。與單純的OAuth2.0 不同,OIDC 不僅專注於授權(即允許應用程式存取使用者在其他服務上的資源),更強調身份驗證——確認「你是誰」。
OpenID Connect (OIDC) 和OAuth2.0 是兩個密切相關但功能定位不同的協議,它們在現代網路應用的認證和授權體系中扮演關鍵角色。以下是它們之間的一些主要區別:
- 目標與功能
- OAuth2.0 主要是授權框架,它允許使用者授權第三方應用程式存取其儲存在另一個服務商(資源伺服器)上的資源,而不必共用使用者名稱和密碼。 OAuth2.0 專注於授權(access),即決定一個應用程式是否有權限存取特定資源,但並未直接處理使用者身分的驗證。
- OpenID Connect (OIDC) 則是在OAuth2.0 的基礎上發展出來的一個身分認證協定。它在提供授權的同時,也提供了一種標準化的方式去驗證終端使用者的身份。 OIDC 引入了ID Token 的概念,這是一種包含用戶身份資訊的JWT(JSON Web Token),使得應用程式可以確信「誰」正在訪問,而不僅僅是可以訪問什麼。
- 認證與授權
- OAuth2.0 僅處理授權問題,即“應用A 能否存取使用者B 在服務C 上的資源”,但它不直接處理使用者身分的認證。
- OIDC 則既處理授權也處理認證,它確保應用程式不僅可以取得存取權限,還能確認使用者的真實身分。
- 資訊交換
- OAuth2.0 使用存取權杖(Access Tokens)來代表使用者授權給應用程式的權限,但這些令牌不包含使用者身分資訊。
- OIDC 在OAuth2.0 的流程中加入了ID Tokens,這是一種包含使用者身分資訊的安全令牌,可以在驗證使用者身分的同時,傳遞一些基本的使用者屬性。
- 安全性
- OAuth2.0 提供了安全的授權機制,但關於使用者身分驗證的部分需要額外的機制來補充。
- OIDC 內建了更強的安全措施,例如使用JWT 和加密技術來保護ID Token,確保了身分識別資訊在傳輸過程中的安全性和完整性。
- 應用場景
- OAuth 2.0 常見於第三方應用程式需要存取使用者資料的場景,如社群媒體登入、雲端服務API存取等。
- OIDC 更適用於需要確認使用者真實身分的服務,如企業應用程式的單一登入、金融服務的身份驗證等。
儘管OIDC 是基於OAuth2.0 構建,但它通過添加身份認證層,提供了更全面的解決方案,以適應現代互聯網應用中對用戶身份驗證和授權的需求。
二核心組件
- 身分提供者(Identity Provider, IdP):負責驗證使用者身分並頒發身分令牌的實體。
- 第三方應用程式(Relying Party, RP):需要驗證使用者身分的應用程式或服務。
- 使用者代理程式(User Agent, UA):使用者的瀏覽器或其他客戶端軟體,用於與 IdP 和RP 互動。
- 授權碼(Authorization Code):在OAuth 2.0 流程中,IdP 向RP 發送的一個臨時代碼,RP 使用該代碼交換存取權杖。
- ID令牌(ID Token):OIDC 特有的概念,是一個JWT(JSON Web Token),包含了用戶的基本信息,用於直接驗證用戶身份。
三OIDC 工作流程
OIDC 的工作流程大致可分為以下步驟:
- 使用者請求存取RP:使用者嘗試存取依賴方(RP)提供的受保護資源。
- 重新導向至IdP:RP 將使用者重新導向至預先設定的身分提供者(IdP)進行登入。
- 使用者身份驗證:使用者在IdP 上輸入憑證完成身份驗證。
- 授權碼發放:IdP 向使用者代理程式(通常是瀏覽器)傳回授權碼,並附帶RP 的重定向URI。
- RP 交換令牌:RP 透過後端伺服器向IdP 發送授權碼,請求換取存取權杖和ID 令牌。
- 驗證ID 令牌:RP 驗證ID 令牌的有效性(簽章、過期時間等),並提取使用者資訊。
- 存取資源:驗證成功後,RP 允許使用者存取受保護資源。
四OIDC 的優勢
- 安全性:透過HTTPS 傳輸數據,使用JWT 進行加密,確保了通訊的安全性。
- 便利性:使用者只需在一個地方(IdP)登錄,即可存取多個應用程式或服務,提高了使用者體驗。
- 標準化:作為開放標準,OIDC 相容於多種平台和服務,以便於開發者整合和維護。
- 擴展性:支援額外的認證資訊和聲明,滿足不同場景下的需求。
五個應用場景
- 企業應用:企業內部系統可以透過OIDC 實現單一登入(SSO),簡化員工存取多個內部應用程式的流程。
- 社群媒體登入:許多網站和應用程式允許用戶使用Google、Facebook 等社群帳號登入,背後就是OIDC 在發揮作用。
- 雲端服務與API 存取:為API 存取提供統一的身份驗證和授權機制,增強雲端服務的安全性。
- 物聯網與行動應用:在智慧型裝置和行動應用程式中實現安全的使用者認證,保護使用者隱私。
六總結
OpenID Connect 作為OAuth 2.0 之上的身份驗證層,透過標準化的流程和強大的安全特性,有效解決了現代網路環境中使用者身份驗證的複雜挑戰。隨著數位轉型的加速,OIDC 的應用範圍將持續擴大,成為連結使用者與服務之間信任橋樑的重要基石。對開發者而言,深入了解並熟練OIDC,無疑是建構安全、高效應用時的重要能力。