學習 skoruba/ IdentityServer4.Admin 完整版

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

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

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

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

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

    1)因爲源項目支持 Docker ,win2012 須要安裝 Docker Tools ,麻煩,直接將「VS項目docker-compose」 卸載,不然有一些配置會提示。數據庫

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

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

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

一、主項目: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,是 or UsernameEmail 。

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

二、公共項目: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

三、管理界面項目 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、修改啓動程序  -> , 取消註釋:
踩坑注意:單獨啓動主項目,自行註冊了用戶,會致使 初始種子用戶 Admin 不會導入!,請刪除註冊的用戶後,從新運行。估計是插入初始數據時,會判斷數據庫中是否已有數據,有就不插了)

B、初始數據,放在 appsettings.json 文件中,
IdentityServerData 節是:  與 
節是: Users (default admin 用戶名、密碼)Program.cs 文件MainDbMigrationHelpers.EnsureSeedData(host)ClientsResources;
IdentityData
相關文章
相關標籤/搜索