從Client應用場景介紹IdentityServer4(三)

来源:https://www.cnblogs.com/FireworksEasyCool/archive/2018/12/19/10142321.html
-Advertisement-
Play Games

在學習其他應用場景前,需要瞭解幾個客戶端的授權模式。首先瞭解下本節使用的幾個名詞 Resource Owner:資源擁有者,文中稱“user”; Client為第三方客戶端; Authorization server為授權伺服器; redirection URI:簡單理解為取數據的地址; User ...


在學習其他應用場景前,需要瞭解幾個客戶端的授權模式。首先瞭解下本節使用的幾個名詞

Resource Owner:資源擁有者,文中稱“user”;

Client為第三方客戶端;

Authorization server為授權伺服器;

redirection URI:簡單理解為取數據的地址;

User Agent:用戶代理,本文中就是指瀏覽器;

這裡把訪問資源伺服器簡單理解成取數據。


 

Resource Owner Password Credentials模式

 

下麵以我自己的理解加上對話的形式來簡要說明。

User:Client,這是我的redirection URI,user ID和Password,你去幫我拿些數據吧。

Client:好的,沒問題!(轉向Authorization server)Authorization server,這是user的user ID和Password,我要去拿user需要的數據。

Authorization server:給的user ID和Password正確,給你access token和refresh token,去拿數據吧。


authorization code模式

 

User:Client,這是我的redirection URI,你去幫我拿些數據吧,但是我不會提供賬號密碼。

Client:這樣啊,那我們找Authorization server吧,讓它來當中間人。

Authorization server(很負責任):User,你是要讓Client幫你拿數據嗎。

User:是啊,這是我的redirection URI。

Authorization server:Client,給你個授權碼authorization code,你拿著authorization code和user給你redirection URI給我驗證吧。

Client:好,這是authorization code和user給我redirection URI,我要去拿數據了。

Authorization server:可以,驗證沒問題了,給你個access token和refresh token,你去拿數據吧。


Implicit模式

 

User:Client,這是我的redirection URI,你去幫我拿些數據吧,但是我不會提供賬號密碼。

Client:這樣啊,那我們還是找Authorization server吧,讓它來當中間人。

Authorization server:User,你是要讓Client幫你拿數據嗎。

User:是啊,這是我的redirection URI。

Authorization server:(瀏覽器登場)瀏覽器,這是user的redirection URI和access token的碎片,你來幫他搞吧。

瀏覽器(很委屈):只給access token的碎片弄不了啊,我還是問redirection URI怎樣才能把這些碎片拼完整吧。

redirection URI的老大(資源伺服器):給你個網頁,裡面有方法把access token的碎片拼起來。

瀏覽器:Client,access token拼好了,你用access token去拿數據吧。

 

Implicit模式通過user的瀏覽器成功拿到了access token,相對於authorization code模式,省去了授權碼部分。

而密碼模式,需要user提供賬號和密碼進行驗證。倘若user的賬號密碼可以讓Client獲取到,可以使用密碼模式,但要確保Client不被黑了。


 

Hybrid模式:

Hybrid模式是結合了Implicit模式和authorization code模式。以下是我對Hybrid模式的理解,如有不對的地方,歡迎指正!

User通過身份認證後,ID token和類似授權碼authorization code等信息被傳輸到瀏覽器,Client通過瀏覽器獲取到authorization code,然後從Authorization server獲取到access token和refresh token。

 


 

最後說下refresh token

獲取到access token後,它是預設有效時間為3600秒/1小時,可以在new Client的AccessTokenLifetime進行設置。一般情況下,access token失效後,用戶需要重新授權,Client才能拿到新的access token。但有了refresh token後,Client檢測到access token失效後,可直接向Authorization server申請新的access token。當然,refresh token也是有有效期的。

AbsoluteRefreshTokenLifetime的預設有效期為2592000秒/30天SlidingRefreshTokenLifetime的預設有效期為1296000秒/15天。

refresh token支持hybridauthorization codedevice flow 和 resource owner password flows等模式 。


 

本節圖片轉自阮一峰的網路日誌:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

以上是個人對客戶端的授權模式的理解,如有不對的地方,歡迎指正

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本篇我將帶著大家一起來對Dapper進行下封裝並實現基本的增刪改查、分頁操作的同步非同步方法的實現(已實現MSSQL,MySql,PgSQL)。同時我們再實現一下倉儲層的代碼生成器,這樣的話,我們只需要結合業務來實現具體的業務部分的代碼就可以了,可以大大減少我們重覆而又繁瑣的增刪改查操作,多留點時間給 ...
  • SQLIte 操作方便,簡單小巧,這裡筆者就不再過多介紹,感興趣可以到以下博文 https://blog.csdn.net/qq_31930499/article/details/80420246 文章介紹創建ASP.NET Core 程式,創建模型、上下文,生成資料庫,對資料庫增刪查改。 並對每個 ...
  • 時光偷走的,永遠都是我們眼皮底下看不見的珍貴。 1、 資源文件 a) Aspose.pdf.18.12.0.nupkg 鏈接:https://pan.baidu.com/s/171_OWOfI5BqYky5JvC06aw 提取碼:vpxi b) Aspose官網下載比較慢,未知原因 c) nuget ...
  • /// /// http請求類 /// public class HttpHelper { private HttpClient _httpClient; private string _baseIPAddress; /// 請求的基礎IP,例如:http://192.168.0.33:80... ...
  • 1、創建MvcHtmlExtension擴展類 2、前臺cshtml使用 作者:Tommy出處:https://www.cnblogs.com/XL-Tommy/本文版權歸作者和博客園所有,歡迎轉載,轉載請標明出處。 如果您覺得本篇博文對您有所收穫,覺得還算用心,請點擊右下角的 [推薦],謝謝! ...
  • 前言: 環境:centos7.5 64 位 正文: 首先我們在宿主機上安裝 .NET Core SDK 安裝好之後,創建一個 .NET Core MVC的項目: 這個時候可能會報錯,我一開始以為是IPV6的問題,後來發現並不是 ![avatar][NETCore1] 加一句這個就可以了 ![avat ...
  • asp.net core 2最簡單的登錄功能 源代碼在此 創建asp.net core Web Mvc項目 配置下選項 項目目錄結構 在Models文件夾下新建兩個實體類 在項目文件夾下新建Data文件夾,新建DbContext類 在Startup.cs文件中的ConfigureServices下添 ...
  • 在傳統單體架構中,由於應用動態性不強,不會頻繁的更新和發佈,也不會進行自動伸縮,我們通常將所有的服務地址都直接寫在項目的配置文件中,發生變化時,手動改一下配置文件,也不會覺得有什麼問題。但是在微服務模式下,服務會更細的拆分解耦,微服務會被頻繁的更新和發佈,根據負載情況進行動態伸縮,以及受資源調度影響 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...