Blazor入门100天 : 身份验证和授权之 OpenID 与 OAuth2
目錄:
- OpenID 與 OAuth2 基礎知識
- Blazor wasm Gitee 碼云登錄
- Blazor wasm GitHub 登錄
- Blazor wasm Google 登錄
- Blazor wasm Facebook 登錄
- Blazor IdentityServer 部署到服務器
- Blazor wasm IdentityServer 單點登錄
相關基礎知識
OpenID 與 OAuth2
參考閱讀 https://auth0.com/docs/authenticate/protocols/openid-connect-protocol#what-is-openid-connect-oidc-
OpenID 連接協議
什么是 OpenID Connect (OIDC)?
OpenID Connect (OIDC) 是構建在OAuth 2.0框架之上的身份層。它允許第三方應用程序驗證最終用戶的身份并獲取基本的用戶配置文件信息。OIDC 使用JSON Web 令牌(JWT),您可以使用符合 OAuth 2.0 規范的流獲取該令牌。看看我們的
OIDC 手冊
更多細節。
OpenID 與 OAuth2
OAuth 2.0 涉及資源訪問和共享,而 OIDC 涉及用戶身份驗證。其目的是讓您一次登錄多個站點。每次您需要使用 OIDC 登錄網站時,您都會被重定向到您登錄的 OpenID 站點,然后返回到該網站。例如,如果您選擇使用 Google 帳戶登錄 Auth0,則您使用的是 OIDC。一旦您成功通過 Google 進行身份驗證并授權 Auth0 訪問您的信息,Google 就會將有關用戶和所執行的身份驗證的信息發送回 Auth0。此信息以 JWT 返回。您將收到一個訪問令牌,如果需要,還會收到一個ID 令牌。
OpenID 和 JWT
JWT 包含索賠,它們是有關實體(通常是用戶)和其他元數據的語句(例如姓名或電子郵件地址)。這
OpenID 連接規范定義了一組標準聲明。該組標準聲明包括姓名、電子郵件、性別、出生日期等。但是,如果您想要捕獲有關用戶的信息,并且當前沒有最能反映此信息的標準聲明,您可以創建自定義聲明并將其添加到您的令牌中。
使用 OIDC 和 OAuth2 配置應用程序
您可以自動使用 OIDC 發現配置您的應用程序。
Auth0 中的應用程序
Auth0 中的術語“應用程序”或“app”并不暗示任何特定的實現特征。例如,它可以是在移動設備上執行的本機應用程序、在瀏覽器上執行的單頁應用程序或在服務器上執行的常規 Web 應用程序。
Auth0 根據以下特征對應用程序進行分類:
應用程序類型:要向您的應用程序添加身份驗證,您必須在Auth0 儀表板中注冊它并從以下應用程序類型之一中進行選擇:
-
常規 Web 應用程序:在服務器上執行大部分應用程序邏輯的傳統 Web 應用程序(例如 Express.js 或 ASP.NET)。
-
單頁 Web 應用程序 (SPA):在 Web 瀏覽器中執行大部分用戶界面邏輯的 JavaScript 應用程序,主要使用 API(例如 AngularJS + Node.js 或 React)與 Web 服務器通信。
-
本機應用程序:在設備(例如 iOS 或 Android)上本機運行的移動或桌面應用程序。
-
機器對機器 (M2M) 應用程序:非交互式應用程序,例如命令行工具、守護程序、物聯網設備或在后端運行的服務。通常,如果您有需要訪問 API 的服務,則可以使用此選項。
憑證安全:根據OAuth 2.0 規范,應用程序可以分為公共或機密;機密應用程序可以安全地保存憑據,而公共應用程序則不能。
所有權:應用程序是否被歸類為第一方或第三方取決于應用程序的所有權和控制權。第一方應用程序由擁有 Auth0 域的同一組織或個人控制。第三方應用程序使外部各方或合作伙伴能夠安全地訪問 API 背后的受保護資源。
單點登錄
當用戶登錄到一個應用程序,然后自動登錄到其他應用程序時,就會發生單點登錄(SSO),無論用戶使用的平臺、技術或域如何。用戶僅登錄一次,因此該功能被稱為“單點登錄”。
例如,如果您登錄 Gmail 等 Google 服務,您將自動通過 YouTube、AdSense、Google Analytics 和其他 Google 應用程序的身份驗證。同樣,如果您退出 Gmail 或其他 Google 應用程序,您也會自動退出所有應用程序;這稱為單點注銷。
SSO 在使用您的應用程序和服務時為用戶提供無縫體驗。用戶無需記住每個應用程序或服務的單獨憑據集,只需登錄一次即可訪問全套應用程序。
每當用戶訪問需要身份驗證的域時,他們都會被重定向到可能要求登錄的身份驗證域。如果用戶已經在該身份驗證域登錄,則可以立即重定向到原始域,而無需登錄再次。
首次登錄時 SSO
對于使用 Auth0 的 SSO,*服務是 Auth0授權服務器。
讓我們看一下用戶首次登錄時的 SSO 流程示例:
-
您的應用程序將用戶重定向到登錄頁面。
-
Auth0 檢查是否存在現有的 SSO cookie。
-
由于這是用戶第一次訪問登錄頁面并且不存在 SSO cookie,因此系統將要求用戶使用您已配置的連接之一進行登錄。
-
用戶登錄后,Auth0 將設置一個 SSO cookie 并將用戶重定向到您的應用程序,返回一個包含用戶身份信息的 ID 令牌。
后續登錄時進行 SSO
讓我們看一下用戶再次訪問您的網站時的 SSO 流程示例:
-
您的應用程序將用戶重定向到登錄頁面。
-
Auth0 檢查是否存在現有的 SSO cookie。
-
Auth0 找到 SSO cookie,并在必要時更新它。不顯示登錄屏幕。
-
Auth0 將用戶重定向到您的應用程序,返回包含用戶身份信息的 ID 令牌。
OpenID 連接
OpenID Connect (OIDC) 是一種常用于面向消費者的 SSO 實現的身份驗證協議。OIDC 協議通過JSON Web 令牌和*身份提供商處理身份驗證。
與 OIDC 合作:
-
用戶請求訪問應用程序。
-
應用程序將用戶重定向到身份提供商以進行身份??驗證。
-
身份提供者驗證用戶,如果成功,則提示用戶授予對應用程序的數據訪問權限。
-
如果授予訪問權限,身份提供者將生成一個 ID 令牌,其中包含應用程序可以使用的用戶身份信息。
-
身份提供者將用戶返回到應用程序。
下一篇直接開始快速通關CV大法
總結
以上是生活随笔為你收集整理的Blazor入门100天 : 身份验证和授权之 OpenID 与 OAuth2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试官:说一说你的第一个Java程序是怎
- 下一篇: Java中单体应用锁的局限性&分布式锁