您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關ABP VNext實踐中如何搭建可用于生產的IdentityServer4,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、前言
今天給大家講講如何在利用abp vnext框架搭建IDS4且可以在生產環境下使用的,其中也需要針對于IDS4在liunx系統使用nginx代理中端點不是https的特別注意事項配置,這個也是一個坑,如果不注意,授權就不成功,除非配置了跳過https的強制驗證;
CLI 命令大家可以參考wiki,命令如下:abp new Louie.Ids4Demo --ui none --separate-identity-server,其中 --separate-identity-server代表將IdentityServer應用程序與API host應用程序分開,--ui none 無UI;打開命令窗口,拷貝進去后就可以生成一個解決方案;
然后我們授權需要修改一下項目中的代碼遷移配置,因為我這邊用的是mysql,而命令生成的是使用sqlserver,在 Louie.Ids4Demo.EntityFrameworkCore中把SQLServer改成Mysql nuget包,并且在DbMigrations類庫中刪除Migrations文件夾,然后修改DbContextFactory.cs里面的配置;截圖如下:
1、Louie.Ids4Demo.EntityFrameworkCore 類庫,去掉sqlserver包,添加mysql包
打開 Ids4DemoEntityFrameworkCoreModule 修改模塊注入和命名空間
2、Louie.Ids4Demo.EntityFrameworkCore.DbMigrations 類庫,刪除Migrations文件
并且修改Ids4DemoMigrationsDbContextFactory.cs文件中的鏈接配置
3、在Louie.Ids4Demo.IdentityServer 主程序中 appsetting.json 添加數據庫連接字符串
4、然后使用遷移命令,生成對應的數據庫表
5、打開Louie.Ids4Demo.IdentityServer 主程序,打開Ids4DemoIdentityServerModule.cs 類
在里面配置自定義的RSA非對稱加密證書,并且禁止在開發環境下由系統生成的臨時證書,我們需要使用重寫PreConfigureServices來替換框架默認的配置
當然證書是我自己生成的,大家可以自行生成,把生成好的證書放在主程序的目錄下,然后再appsetting.json 中配置一下
上面配置中有涉及到AddResourceOwnerValidator主要是用到密碼模式下的自定義驗證邏輯以及添加聲明,如果大家不需要則可以不用配置,直接注釋;AddProfileService 主要是是聲明claims需要和庫表中定義的申明一致,否則無法顯示,這個也是一個安全校驗的方式。
配置完后啟動打開瀏覽器,并且啟動的url后綴添加 .well-known/openid-configuration,如果可以查看到端點則代表配置成功。
6、問題來了,在我們的IDS4部署到docker上后,發現查看的端點不是https的,我們需要在OnApplicationInitialization 方法中配置一個特殊代碼
當然大家也可以看一下一個解決方案的issue:https://github.com/dotnet/AspNetCore.Docs/issues/2384
主要原因是使用的反向代理導致域名是https的,但是端點無法映射https;插入以下代碼即可
大家在部署到生產線后就可以看到端點已經是https了
以上就是ABP VNext實踐中如何搭建可用于生產的IdentityServer4,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。