中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.Net Core認證系統的示例分析

發布時間:2021-08-09 09:58:43 來源:億速云 閱讀:101 作者:小新 欄目:開發技術

小編給大家分享一下.Net Core認證系統的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1、簡介

省去前面的創建Core Web項目的一系列操作.VS幫你自動化初始化好所有的基礎組件、環境.第一步就是認證.就是登陸.當然微軟提供了一套登陸組件.很全,很完善。項目在Core源碼

.Net Core認證系統的示例分析

Security文件夾下,源碼自行去github下載.里面提供了若干個認證方法,常見的Cookie認證、JwtBear認證等等.還包括FaceBook、Google等遠程認證方式.

.Net Core認證系統的示例分析

本文暫時不講解具體的認證方式,主要闡述核心認證流程.

(1)、認證系統的執行過程

Core啟動認證系統的方式很簡單

.Net Core認證系統的示例分析

很簡單的一段代碼,看看它干了什么

.Net Core認證系統的示例分析

很簡單,注入認證中間件,關于中間件這里就不說多,不是文本的重點,自行百度.看看中間價干了什么.

.Net Core認證系統的示例分析

核心代碼,首先拿到DI中注入的認證請求處理器集合,接著去DI中獲取認證處理方案集合中的處理認證請求上下文的方案類.接著去處理器集合中拿到處理遠程認證請求上下文的方案類對應的認證請求處理器,接著執行處理器的HandleRequestAsync方法,完成遠程認證的處理.

.Net Core認證系統的示例分析

接著

.Net Core認證系統的示例分析

遠程認證流程執行完畢之后,直接return.反之,如果當前不是使用遠程認證,接著去認證方案中拿到默認的認證方案,不為空,執行上下文的擴展方法context.AuthenticateAsync,這個方法干了什么如下:

.Net Core認證系統的示例分析

執行DI中注入的認證服務方法,并傳入上下文和默認的認證方案名稱.

.Net Core認證系統的示例分析

.Net Core認證系統的示例分析

先判斷存不存在默認認證方案,不存在拋異常,接著去所有的認證處理器集合中拿到默認認證方案的處理器.接著調用處理的認證方法,認證成功,判斷當前用戶身份集合中在臨時緩存中存不存在,不存在,可以執行Claim的轉換.這很好,說明用戶認證成功之后的Cliam也是可以被轉換的.

.Net Core認證系統的示例分析

只要注入IClaimsTransformation服務即可,你就可以執行你需要的業務的Claim轉換,最后返回結果

.Net Core認證系統的示例分析

到這里整個認證流程結束.非常的簡單.且關鍵點的擴展微軟都預留了.可以自定義實現

(2)、流轉服務的介紹.

上面介紹了整個認證組件的流轉過程,因為我對流程很清楚,所以大家可能還是不理解.所以接下去開始介紹流轉必須服務的注入.

.Net Core認證系統的示例分析

認證處理器的Provider類,那么Core是在哪里注入認證處理器的呢?

.Net Core認證系統的示例分析

這里,核心也是紅框里的,下面的只是一些依賴組件。

.Net Core認證系統的示例分析

微軟注入默認的認證處理器.看下獲取處理器的實現,對應中間件.

.Net Core認證系統的示例分析

閱讀源碼發現,Provider類并不具體實現提供認證處理器的方法.而是通過SchemeProvider來提供.

.Net Core認證系統的示例分析

原來是IAuthenticationSchemeProvider類提供認證處理器.而且是通過反射實現(這點開銷,就沒必要考慮性能問題,當然你可以考慮重構),那么問題來了,在哪里出入IAuthenticationSchemeProvider服務內,回到上面那張圖

.Net Core認證系統的示例分析

微軟也提供了默認實現,去看看GetSchemeAsync方法的實現

.Net Core認證系統的示例分析

.Net Core認證系統的示例分析

ok,到這里就說明認證處理器是通過向這個字典寫入值,來實現的.

.Net Core認證系統的示例分析

上面是認證方案AuthenticationScheme類的核心字段,HandlerType就是認證處理器.

.Net Core認證系統的示例分析

AuthenticationSchemeProvider類維護了一個_schemes的字典,通過它向外輸出.認證方案集合提供類.

.Net Core認證系統的示例分析

接著認證處理器集合提供類AuthenticationHandlerProvider通過解析

.Net Core認證系統的示例分析

認證方案集合提供類,拿到所有的認證處理器.

到這里,很明顯,所有的認證處理器都是通過向AuthenticationSchemeProvider的_schemes字典注入認證處理器.既然如此,入口在哪?在AuthenticationBuilder類下面.

.Net Core認證系統的示例分析

下面是Cookie認證方式注入認證處理器的方式

.Net Core認證系統的示例分析

AddScmeme方法.在配置參數的同時,指定了處理器.

接著,回到中間件的圖

.Net Core認證系統的示例分析

我們通過AuthenticationBuilder的AddScheme方法向_schemes集合寫入了認證處理器且配置了處理器的參數,接著通過AuthenticationHandlerProvider拿到了所有的認證處理器.

接著我們通過Schemes方案集合拿到所有處理認證請求上下文的處理器,執行處理認證請求上下文參數.處理完畢.

接著我們解析Schemes中提供的默認認證方案,代碼如下:

.Net Core認證系統的示例分析

.Net Core認證系統的示例分析

根據.Net Core認證系統的示例分析

這個配置參數,一般在入口注入:

.Net Core認證系統的示例分析

中配置默認方案名稱,拿到默認認證方案.再將處理過的認證請求上下文和默認方案傳給IAuthenticationService,這個Service也有默認實現,如下:

.Net Core認證系統的示例分析

.Net Core認證系統的示例分析

AuthenticationService將處理過的認證請求上下文交給具體的認證請求處理器來處理.并返回處理結果.認證請求處理器前面說過了,通過AuthenticationBuilder的AddScheme方法來注入.

以上是“.Net Core認證系統的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荃湾区| 泰兴市| 平顶山市| 赣州市| 邵阳市| 宜州市| 宁津县| 诸暨市| 阿合奇县| 汉源县| 密云县| 芦山县| 五河县| 乡城县| 抚远县| 巴中市| 新源县| 葫芦岛市| 桂阳县| 临武县| 岳池县| 乌苏市| 南投县| 灵石县| 吐鲁番市| 临猗县| 汾西县| 井陉县| 堆龙德庆县| 汉源县| 宝丰县| 阿拉善左旗| 杭锦后旗| 通河县| 交城县| 三穗县| 巴林左旗| 海门市| 齐齐哈尔市| 武城县| 砚山县|