原创 ASP.NET Core Web API下基於Keycloak的多租戶用戶授權的實現

在上文《Keycloak中授權的實現》中,以一個實際案例介紹了Keycloak中用戶授權的設置方法。現在回顧一下這個案例: 服務供應商(Service Provider)發佈/WeatherForecast API供外部訪問 在企業應用(

原创 Keycloak中授權的實現

在Keycloak中實現授權,首先需要了解與授權相關的一些概念。授權,簡單地說就是某個(些)用戶或者某個(些)用戶組(Policy),是否具有對某個資源(Resource)具有某種操作(Scope)的權限(Permission)。所以,授權

原创 在Keycloak中實現多租戶並在ASP.NET Core下進行驗證

Keycloak是一個功能強大的開源身份和訪問管理系統,提供了一整套解決方案,包括用戶認證、單點登錄(SSO)、身份聯合、用戶註冊、用戶管理、角色映射、多因素認證和訪問控制等。它廣泛應用於企業和雲服務,可以簡化和統一不同應用程序和服務的安全

原创 快速理解ASP.NET Core的認證與授權

ASP.NET Core的認證與授權已經不是什麼新鮮事了,微軟官方的文檔對於如何在ASP.NET Core中實現認證與授權有着非常詳細深入的介紹。但有時候在開發過程中,我們也往往會感覺無從下手,或者由於一開始沒有進行認證授權機制的設計與規劃

原创 使用C#開發CHIP-8虛擬機

[caption id="attachment_1293" align="alignright" width="300"] 正在運行《太空攔截》遊戲的Telmac 1800微型計算機[/caption] CHIP-8是上世紀70年代(19

原创 Saga體系結構模式:微服務架構下跨服務事務的實現

在服務端應用程序中,我們往往會通過事務處理來保證數據一致性(Data Consistency),例如:當用戶從庫存中取走了一定數量的物品,這些物品會體現在用戶的提貨單上,與此同時,庫存中物品的數量也應該減少。如果在這個過程中無法保證數據的一

原创 Windows Forms下釋放資源的正確做法

有時候需要在Windows Forms中加入一些實現了IDisposable接口的類型,然而會有這樣的疑惑:應該在何時調用這些類型的Dispose方法? 第一種方式是在窗體的OnClosed事件處理函數重載中調用,比如: class My

原创 C#中的init關鍵字

從C# 9開始,引入了init關鍵字,其目的是確保類中的屬性(property)僅在對象被構造的時候才允許被賦值,聽起來好像與C# 6中的自動屬性構造函數初始化(auto-property constructor initializatio

原创 再談基於Ocelot API網關和IdentityServer的API認證與授權

在《再談使用IdentityServer實現ASP.NET Core Web API的認證與授權》一文中,我又重新總結了IdentityServer中ApiScope和ApiResource的用法,通過對兩者的設置,實現了基於Claim的A

原创 使用裝飾器模式[GoF95]和C#擴展方法實現配置系統的領域特定語言(DSL)

這兩天在整理兩年前寫的一個打字練習的小遊戲的代碼,發現其中有個寫法挺有意思: private IEnumerable<LetterSprite> LetterSprites => from p in this where p is L

原创 Blazor WebAssembly實現經nginx反向代理的IdentityServer4的身份認證

在微服務架構的部署拓撲中,比較常見的做法是將身份認證中心(Identity Authority)與其它的微服務一起,置於API Gateway之後,由API Gateway提供統一的端點供客戶端程序訪問。本文介紹如何將IdentitySer

原创 在Windows 7中安裝.NET Framework 4.8

Windows 7是一個老的操作系統,它與它的SP1版本早已在2015年1月13日結束主流版本的支持,雖然微軟官方將最終支持日期延期到2020年1月14日,但這也已經過去了幾年的時間了,參考:https://learn.microsoft.

原创 C#中的協變(Covariance)引起的面向對象設計問題一則

協變(Covariance)與逆變(Contravariance)是Visual C# 4.0中引入的一個語言特性,目的是爲了強化在泛型類型上繼承關係的語義的合理性。舉個非常簡單的例子:爬行動物和哺乳動物都繼承於動物,然後你不能將爬行動物的

原创 再談使用IdentityServer實現ASP.NET Core Web API的認證與授權

在《使用Ocelot、IdentityServer4、Spring Cloud Eureka搭建微服務網關:Step by Step(一)》一文中,我曾經介紹瞭如何使用IdentityServer4對ASP.NET Core Web API

原创 Mediator(中介者)模式在MonoGame遊戲開發中的應用

背景 遊戲開發中,一個非常常見的行爲就是,遊戲中的角色需要對周圍發生的事物做出反應:飛機在被子彈打中後要出現爆炸效果並從屏幕上消失;檯球在撞擊到桌面邊緣時應能夠根據速度和角度反彈等等。在這些場景中,至少會有兩個參與者(飛機與子彈,檯球與桌面