【实战 Ids4】║ 控制台密码模式搭配Ocelot网关
(此歲只能云賞櫻了)
書接上文,這些天一直在研究IdentityServer4(下文簡稱Ids4)框架,發現有很多有意思,或者說比我想象中的知識點,可擴展的多,所以比較開心能鉆研進去,就像當時學習ASP.NET Core一樣,越學越感覺有意思的,我自認為ASP.NET Core已經學的基本出師了,希望Ids4我也能學到出師,畢竟要干一件事就要做好它。
在之前的公眾號文章中呢,我已經對多個客戶端進行了遷移,比如JS模式,MVC模式:
【實戰 Ids4】║ 客戶端、服務端、授權中心全線打通!
【實戰 Ids4】║ 又一個項目遷移完成(MVC)
在我的開篇講中,一共說到了平時開發常見的模式有以下幾個:
簡化模式和授權碼模式已經說完了,分別對應了JS客戶端和MVC客戶端,那今天就說一下第三種密碼授權模式——控制臺調用,之前之所以沒說,是因為太簡單了,那今天正好配合著Ocelot 網關一起講講,也不算濫竽充數。
正文開始。
1、認證中心配置客戶端
這一步很簡單,我們只需要增加一個Client即可:
// 控制臺客戶端 密碼模式new Client{ClientId = "Console",ClientSecrets = { new Secret("secret".Sha256()) },AllowedGrantTypes = new List<string>(){GrantTypes.ResourceOwnerPasswordAndClientCredentials.FirstOrDefault(),},AllowedScopes = new List<string>{"blog.core.api"}}簡單來說,是允許一個名為Console的客戶端,使用密碼模式,通過我們的認證中心,來訪問blog.core.api的資源服務器,具體什么意思,相信應該都能看的懂,這里不贅述。
2、創建控制臺客戶端
上邊我們已經配置好,下邊我們就直接創建對應的客戶端來測試吧。
打開vs2019,創建NetCore的控制臺應用程序
創建好后,引用?IdentityModel?Nuget包
<ItemGroup><PackageReference Include="IdentityModel" Version="4.1.1" /></ItemGroup>接下來,就是簡單寫代碼了
我已經對部分地方加了注釋,相信你應該能看的懂,簡單來說,就是通過賬號信息向Ids4認證中心(5004)發起請求,獲取到access_token,然后帶上這個token向資源服務器(8081)發起請求,沒錯就是我們的Blog.Core項目,注意這個代碼是is4分支的,不是master的。
然后還要注意Blog.Core的授權地址要改成localhost:5004,而不是ids.neters.club。
3、開啟三端,聯調測試
這里的三端分別是:認證中心、資源服務器、還有剛剛創建的控制臺。
這里肯定沒問題,我簡單放兩個結果圖:
(獲取到了token)
(訪問資源服務器,返回結果)
(為表示正確性,我這里貼出來api確實是加密的)
那現在我們的控制臺密碼授權模式已經說完了,那接下來就簡單說一下如果使用Ocelot來實現api網關吧。
4、創建Ocelot API網關
再創建一個空的API項目,端口設置3000
添加配置數據
引用Ocelot的Nuget包
<ItemGroup><PackageReference Include="Ocelot" Version="14.1.0" /> </ItemGroup>注冊服務和添加中間件
public void ConfigureServices(IServiceCollection services) {services.AddControllers();services.AddOcelot(); }public void Configure(IApplicationBuilder app, IWebHostEnvironment env){app.UseRouting();app.UseOcelot();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});}我們發起請求訪問
當然,這是很正常的,證明我們已經成功的把資源服務器的8081,交給了3000的Ocelot網關了。
5、修改控制臺請求
剛剛我們的控制臺客戶端,請求的是資源服務器,那我們現在改成API網關,看是否依然可以:
沒錯,依然是可行的。
到了這里,我們已經成功的學會了:
1、如何使用密碼授權模式;
2、如何控制臺客戶端發起請求;
3、如何使用Ocelost API網關;
4、如何基于網關進行Ids4的授權認證操作;
好啦,今天就到這里吧,窗外陽光明媚,春暖花開。
總結
以上是生活随笔為你收集整理的【实战 Ids4】║ 控制台密码模式搭配Ocelot网关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core开发实战(第28课:工
- 下一篇: StringBuilder内存碎片对性能