學習 skoruba/ IdentityServer4.Admin 完整版


    想學習 IdentityServer4 的身份服務器的開發,但正好處於 Net Core 發布 3.0,各種框架處於升級中。

 IdentityServer4 盡提供了基礎的功能,界面UI 需要擴展,或者購買商業咨詢服務。Github 有幾個擴展的項目,其中兩個處於持續的更新中,包括升級 Net Core 3.0,分別是:brunohbrito/JPProject.IdentityServer4.SSO

 skoruba/IdentityServer4.Admin ,本Blog僅描述使用后者的一些經驗:

    dentityServer4.Admin 的 Dev 版已升級 Net Core 3.0,Clone 整個源碼在本地測試,過程記錄:

    測試環境是:windows2012, VS2019 16.4, 沒有安裝 .Net 4.7.2 產生一個 Build Error : MSB3086 , 未能使用 SdkToolsPath, 或者 找到“al.exe”,安裝后OK。

    1)由於源項目支持 Docker ,win2012 需要安裝 Docker Tools ,麻煩,直接將“VS項目docker-compose” 卸載,否則有一些配置會提示。

    2)同時也刪除了主項目 STS.Identity 的 Docker 支持:launchSettings.json 的 Docker 啟動項,項目根目錄下的 Dockerfile。(項目要增加Docker支持,右健點項目,選‘添加/ Docker 支持...’,可以重新加上刪除的兩項信息。---- 新建 VS Core Web項目時,有支持 Docker 的可選項。)----- 僅是個人考慮。

      整個解決方案需要設置三個啟動項目:(右鍵點擊 ’VS解決方案‘,選擇 ’設置啟動項目...‘ 菜單。)

  • Skoruba.IdentityServer4.STS.Identity
  • Skoruba.IdentityServer4.Admin
  • Skoruba.IdentityServer4.Admin.Api

1、主項目:Skoruba.IdentityServer4.STS.Identity    IdentityServer4 的擴展,可以單獨啟動。

      1.1)主項目依賴:Skoruba.IdentityServer4.Admin.EntityFramework     

                          (依賴  Skoruba.IdentityServer4.Admin.EntityFramework.Extensions)

                            Skoruba.IdentityServer4.Admin.EntityFramework.Identity   (依賴 Admin.EntityFramework) 

                            Skoruba.IdentityServer4.Admin.EntityFramework.Shared (依賴 Admin.EntityFramework、Identity) 

        1.2)要真正能運行起來,重點是 EF Core 的配置,以及 數據遷移Migration  命令的運行。由於使用了EF框架,可以支持多種數據庫:MSSQL、PostgreSQL, SQLite, MySQL等,但首先要安裝相應的驅動。

     Install-Package  Microsoft.EntityFrameworkCore.SqlServer    支持 MSSQL Server,  (坑之一)

        特別提示,源項目的依賴中沒有引入。否則 會在  Update-Database  應用 Migration時 出現Build錯誤。

       默認使用:MSSQL Server 本地版,如果使用其它數據庫,還需要修改 appsettings.json 的連接字符串,Helpers\StartupHelpers.cs 中的UseSqlServer、UseNpgsql、UseSqlite、UseMySql 等。

       1.3)在VS 的 "包管理控制台",選擇 STS.Identity 項目,運行下列四命令,Migrations for IdentityServer configuration DbContext 與 persisted grants DbContext: 

 Add-Migration IdentityServerConfigurationDbInit -context IdentityServerConfigurationDbContext -output Data/Migrations/IdentityServerConfiguration  Update-Database -context IdentityServerConfigurationDbContext 
 Add-Migration IdentityServerPersistedGrantsDbInit -context IdentityServerPersistedGrantDbContext -output Data/Migrations/IdentityServerGrants  Update-Database -context IdentityServerPersistedGrantDbContext

1.4)
User Login Configuration/Register Configuration 配置,通過 appsettings.json
    User login column 配置用戶表中哪個列代表登錄User,是Username or Email 。

  User 用戶自行注冊,或者是統一注冊。
 設置 設置電子郵件:SmtpConfiguration 或 SendgridConfiguration。

2、公共項目:Skoruba.IdentityServer4.Admin.EntityFramework.Shared
 

        在VS 的 "包管理控制台",選擇 EntityFramework.Shared 項目,運行 數據遷移命令:Migrations for Asp.Net Core Identity DbContext:   這是 用戶及角色、權限有關的數據結構。

 Add-Migration AspNetIdentityDbInit -context AdminIdentityDbContext -output Data/Migrations/Identity  Update-Database -context AdminIdentityDbContext

3、管理界面項目 Skoruba.IdentityServer4.Admin
3.1)在VS 的 "包管理控制台",選擇 
Skoruba.IdentityServer4.Admin 項目,運行 數據遷移命令:Migrations for Logging DbContext 與 Migrations for AuditLogging DbContext
 Add-Migration LoggingDbInit -context AdminLogDbContext -output Data/Migrations/Logging  Update-Database -context AdminLogDbContext
 Add-Migration AdminAuditLogDbInit -context AdminAuditLogDbContext -output Data/Migrations/AuditLogging  Update-Database -context AdminAuditLogDbContext
   3.2)種子數據:
A、修改啟動程序 Program.cs 文件 -> Main, 取消注釋:DbMigrationHelpers.EnsureSeedData(host)
踩坑注意:單獨啟動主項目,自行注冊了用戶,會導致 初始種子用戶 Admin 不會導入!,請刪除注冊的用戶后,重新運行。估計是插入初始數據時,會判斷數據庫中是否已有數據,有就不插了)

B、初始數據,放在 appsettings.json 文件中,
IdentityServerData 節是: Clients 與 Resources;
IdentityData
節是: Users (default admin 用戶名、密碼)
 






免責聲明!

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



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