AspNetCore3.1_Secutiry源碼解析_1_目錄


文章目錄

概述

最近一直在學習研究認證授權這一塊,從AspNetCore的Security解決方案,到Identity,再到OAuth2.0、OpenIdConnect協議,然后IdentityServer4,這一塊的東西十分多而且復雜,可以算是DotNet里最難啃的骨頭之一了。計划做個認證授權的系列,藉由分析源碼來學習、記錄和加深對這一塊的理解。

如圖是AspNetCore.Security解決方案的項目結構。

可以看到主要有5個解決方案文件夾

  • Authentication:認證
  • Authorization:授權
  • CookiePolicy:Cookie策略中間件
  • _dependencies:依賴項目
  • benchmarks:測試項目

最主要的是Authentication和Authorization這兩個里面的內容。

image

什么是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里面屬於高頻詞匯,意思是策略。這兩個項目允許設置不同的授權策略/規則,來實現高度靈活的授權方案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM