iT邦幫忙

2024 iThome 鐵人賽

DAY 28
1
Software Development

從零開始的後端學習之旅系列 第 28

DAY28 OpenID Connect:基於 OAuth 2.0 的身份驗證協定

  • 分享至 

  • xImage
  •  

前言

OAuth 2.0 發布後,雖然許多應用廣泛採用它作為授權標準,但開發者逐漸發現僅僅依靠 OAuth 2.0 進行授權不足以解決身份驗證的需求。由於 OAuth 2.0 的設計並非為了處理身份驗證,各網站不得不自行創建驗證機制,這導致了很多不一致和混亂。為了解決這一問題,OpenID Connect 出現了,作為一個基於 OAuth 2.0 的標準化身份驗證協定。今天,我們來看看什麼是 OpenID Connect 吧!
/images/emoticon/emoticon08.gif

什麼是 OpenID Connect(OIDC)?

先來看一下 OpenID Foundation 對這個協議的敘述:

OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It enables Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the End-User in an interoperable and REST-like manner.

OpenID Connect 是一種基於 OAuth 2.0 擴展而來的簡單身份驗證協議。透過這個協議,開發人員可以依據統一的標準,通過授權伺服器(Authorization Server)對用戶進行身份驗證。

ID token(通常為 JWT 格式) 是 OpenID Connect 對 OAuth 2.0 最主要的擴充,客戶端(Client)可以向 OpenID 提供者(OpenID Provider)請求 ID Token,當需要用戶身份驗證的資料時,就可以使用這個 token 來獲取相關信息。

OpenID Connect 的流程如何進行?

https://ithelp.ithome.com.tw/upload/images/20241012/20167721xn2cyU3uf5.png

上圖來自OpenID Foundation

先來個名詞解釋:

  • RP (Relying Party):依賴於 OP 提供的身份驗證的一方 AKA OAuth 2.0 中的客戶端。
  • OP(OpenID Provider):OpenID 的提供者 AKA OAuth 2.0 的授權伺服器,能夠對 End-User 進行身份驗證,並向依賴方提供有關身份驗證事件和最終用戶的聲明。
  • End-User:使用者 AKA OAuth 2.0 的 resource owner。

由於是基於 OAuth 2.0 的擴充協定,其實就是透過 OAuth 2.0 的方式去向 OP 請求 End-User 的ID token ,實現的方法則是在客戶端向 OP 發出請求時,請求中的 Scope 參數要求 OpenID file。之後當用戶端需要使用身份驗證相關的資料時再使用 ID token 向 OP 請求相關資料。

OAuth 2.0 與 OpenID Connect 的互補

透過 OAuth 2.0 的授權機制(Authorization)與 OpenID Connect 的驗證功能(Authentication)的結合,開發者不僅可以確定 這個 token 可以做什麼?」,也能夠透過一個安全且標準化的方式確定誰在使用這個token。這種結合使身份驗證的責任得以有效地分離,將用戶的憑證(如帳號和密碼)交由身份提供者(OP)進行安全保管和處理,減少了應用程式對於敏感資料的直接管理需求,提升了系統的安全性和靈活性。

小結

現在常使用到的第三方登入,讓我們可以很方便的透過 FaceBook、Line、Google帳號等,註冊各種系統的會員,像是 Instagram 等社群帳號或是各種遊戲...等。在之前我本來也是很單純的認為就是透過 OAuth 2.0 的流程就可以做到這些,後來偶然看到了這部影片才對於 OAuth 2.0 以及 OpenID Connect 有更清楚的理解,有時間想要更深入了解的話可以看一下這部影片~
本篇雖然落落長,不過其實重點就是:
OAuth 是授權機制,只有 OpenID Connect 才能進行身份驗證!
OAuth 是授權機制,只有 OpenID Connect 才能進行身份驗證!
OAuth 是授權機制,只有 OpenID Connect 才能進行身份驗證!

參考資料

What is OpenID Connect
OpenID Connect Core 1.0 incorporating errata set 2
OAuth 2.0 and OpenID Connect overview
OAuth 2.0 and OpenID Connect (in plain English)


上一篇
DAY 27 OAuth 2.0 vs OAuth 1.0:更安全、更靈活的授權機制
下一篇
DAY29 深入淺出 JWT
系列文
從零開始的後端學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言