文章目錄
- AspNetCore3.1_Secutiry原始碼決議_1_目錄
- AspNetCore3.1_Secutiry原始碼決議_2_Authentication_核心專案
- AspNetCore3.1_Secutiry原始碼決議_3_Authentication_Cookies
- AspNetCore3.1_Secutiry原始碼決議_4_Authentication_JwtBear
- AspNetCore3.1_Secutiry原始碼決議_5_Authentication_OAuth
- AspNetCore3.1_Secutiry原始碼決議_6_Authentication_OpenIdConnect
- AspNetCore3.1_Secutiry原始碼決議_7_Authentication_其他
- AspNetCore3.1_Secutiry原始碼決議_8_Authorization_授權框架
概述
最近一直在學習研究認證授權這一塊,從AspNetCore的Security解決方案,到Identity,再到OAuth2.0、OpenIdConnect協議,然后IdentityServer4,這一塊的東西十分多而且復雜,可以算是DotNet里最難啃的骨頭之一了,計劃做個認證授權的系列,藉由分析原始碼來學習、記錄和加深對這一塊的理解,
如圖是AspNetCore.Security解決方案的專案結構,
可以看到主要有5個解決方案檔案夾
- Authentication:認證
- Authorization:授權
- CookiePolicy:Cookie策略中間件
- _dependencies:依賴專案
- benchmarks:測驗專案
最主要的是Authentication和Authorization這兩個里面的內容,

什么是Authentication, 什么是Authorization
初次接觸這一塊,可能會比較懵,啥玩意兒啊,倆單詞長得差不多像念繞口令的,
我嘗試大白話解釋下,
Authentication(認證):who are you,系統獲知當前用戶身份的程序就叫認證,可以類比成身份證,通常來說,在你登錄的時候,系統就知道了你的身份,然后將當前用戶資訊加密后存盤在Cookie中來維持登錄態,
Authorization(授權):are you allowed,授權就是判斷你有沒有權限,比如網管拿著你身份證一看,你這不行,未滿十八歲,不能在我這上網,而有的黑網吧是沒有這個要求的,給錢就能玩,正經網吧和黑網吧,這就是需要授權資源和匿名資源的區別,
Authentication專案簡介
我們可以看到第三個檔案夾叫Core,里面只有一個專案叫Microsoft.AspNetCore.Authentication,是我們使用DotNet授權框架必須參考的一個核心類別庫,
然后其他的Certificate、Cookies、OAuth、OpenIdConnect等這些,在DotNet里叫做Schema,可以翻譯為架構,這就好比,證明身份的方式有很多種,身份證、護照、戶口本都可以,同理網路世界也有各種各樣的協議,最常見傳統的是方式是使用Cookie,也可以使用無狀態的JwtBear,現在常見的微信、QQ等掃碼登錄是使用的OAuth協議,
Authorization專案簡介
授權就兩個專案,[Microsoft.AspNetCore.Authorization.Policy],[Microsoft.AspNetCore.Authorization],多看看原始碼的話,應該對Policy這個詞很熟悉了,在DotNet里面屬于高頻詞匯,意思是策略,這兩個專案允許設定不同的授權策略/規則,來實作高度靈活的授權方案,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/54779.html
標籤:.NET Core
