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