From 3c59d3960cd8f429058fe3ed4ee5971b350f8332 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 1 Sep 2023 13:41:56 +0800 Subject: [PATCH] Enhance `RandomizeAuthServerPassPhraseStep`. --- .../Commands/ProjectCreationCommandBase.cs | 40 +++++++------- .../RandomizeAuthServerPassPhraseStep.cs | 54 ++++++++++++++----- .../MyProjectNameModule.cs | 1 + .../MyProjectNameModule.cs | 1 + .../Server.Mongo/MyProjectNameHostModule.cs | 1 + .../Server/MyProjectNameHostModule.cs | 1 + .../MyProjectNameModule.cs | 1 + .../MyProjectNameModule.cs | 1 + .../MyProjectNameModule.cs | 1 + .../MyProjectNameModule.cs | 1 + .../MyProjectNameAuthServerModule.cs | 1 + .../MyProjectNameBlazorModule.cs | 1 + .../MyProjectNameWebModule.cs | 1 + 13 files changed, 72 insertions(+), 33 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 54747e807e..cf697fd899 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -484,29 +484,31 @@ public abstract class ProjectCreationCommandBase protected Task CreateOpenIddictPfxFilesAsync(ProjectBuildArgs projectArgs) { - var modules = projectArgs.ExtraProperties[nameof(RandomizeAuthServerPassPhraseStep)].Split(Environment.NewLine); - foreach (var module in modules.Where(x => !string.IsNullOrWhiteSpace(x))) + var module = projectArgs.ExtraProperties[nameof(RandomizeAuthServerPassPhraseStep)]; + if (string.IsNullOrWhiteSpace(module)) { - var moduleDirectory = projectArgs.OutputFolder + module; - if (projectArgs.UiFramework != UiFramework.Angular) - { - moduleDirectory = moduleDirectory.Replace("/aspnet-core/", "/"); - } - - moduleDirectory = Path.GetDirectoryName(projectArgs.SolutionName.CompanyName == null - ? moduleDirectory.Replace("MyCompanyName.MyProjectName", projectArgs.SolutionName.ProjectName) - : moduleDirectory.Replace("MyCompanyName", projectArgs.SolutionName.CompanyName).Replace("MyProjectName", projectArgs.SolutionName.ProjectName)); + return Task.CompletedTask; + } - if (Directory.Exists(moduleDirectory)) - { - CmdHelper.RunCmd($"dotnet dev-certs https -v -ep openiddict.pfx -p {RandomizeAuthServerPassPhraseStep.RandomPassPhrase}", moduleDirectory); - } - else - { - Logger.LogWarning($"Couldn't find the module directory to create openiddict.pfx file: {moduleDirectory}"); - } + var moduleDirectory = projectArgs.OutputFolder + module; + if (projectArgs.UiFramework != UiFramework.Angular) + { + moduleDirectory = moduleDirectory.Replace("/aspnet-core/", "/"); } + moduleDirectory = Path.GetDirectoryName(projectArgs.SolutionName.CompanyName == null + ? moduleDirectory.Replace("MyCompanyName.MyProjectName", projectArgs.SolutionName.ProjectName) + : moduleDirectory.Replace("MyCompanyName", projectArgs.SolutionName.CompanyName).Replace("MyProjectName", projectArgs.SolutionName.ProjectName)); + + if (Directory.Exists(moduleDirectory)) + { + Logger.LogInformation($"Creating openiddict.pfx file on {moduleDirectory}"); + CmdHelper.RunCmd($"dotnet dev-certs https -ep openiddict.pfx -p {RandomizeAuthServerPassPhraseStep.RandomOpenIddictPassword}", moduleDirectory); + } + else + { + Logger.LogWarning($"Couldn't find the module directory to create openiddict.pfx file: {moduleDirectory}"); + } return Task.CompletedTask; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeAuthServerPassPhraseStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeAuthServerPassPhraseStep.cs index 8653f2fba3..a41c870f41 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeAuthServerPassPhraseStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/RandomizeAuthServerPassPhraseStep.cs @@ -7,9 +7,13 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates; public class RandomizeAuthServerPassPhraseStep : ProjectBuildPipelineStep { - protected const string DefaultPassPhrase = "00000000-0000-0000-0000-000000000000"; - - public readonly static string RandomPassPhrase = Guid.NewGuid().ToString("D"); + private const string DefaultPassword = "00000000-0000-0000-0000-000000000000"; + private const string KestrelCertificatesDefaultPassword = "Kestrel__Certificates__Default__Password=00000000-0000-0000-0000-000000000000"; + private const string LocalhostPfx = "localhost.pfx -p 00000000-0000-0000-0000-000000000000"; + private const string DotnetDevCerts = "openiddict.pfx -p 00000000-0000-0000-0000-000000000000"; + private const string ProductionEncryptionAndSigningCertificate = "AddProductionEncryptionAndSigningCertificate(\"openiddict.pfx\", \"00000000-0000-0000-0000-000000000000\");"; + private readonly static string RandomPassword = Guid.NewGuid().ToString("D"); + public readonly static string RandomOpenIddictPassword = Guid.NewGuid().ToString("D"); public override void Execute(ProjectBuildContext context) { @@ -23,10 +27,10 @@ public class RandomizeAuthServerPassPhraseStep : ProjectBuildPipelineStep x.Name.EndsWith(".ps1") || x.Name.EndsWith(".sh") || x.Name.Contains("Dockerfile")) - .Where(x => x.Content.IndexOf(DefaultPassPhrase, StringComparison.InvariantCultureIgnoreCase) >= 0) + .Where(x => x.Content.IndexOf(DefaultPassword, StringComparison.InvariantCultureIgnoreCase) >= 0) .ToList(); - var modules = new List(); + string module = null; foreach (var file in files) { file.NormalizeLineEndings(); @@ -34,21 +38,43 @@ public class RandomizeAuthServerPassPhraseStep : ProjectBuildPipelineStep var lines = file.GetLines(); for (var i = 0; i < lines.Length; i++) { - if (lines[i].Contains(DefaultPassPhrase)) + if (lines[i].Contains(KestrelCertificatesDefaultPassword)) + { + lines[i] = lines[i].Replace(KestrelCertificatesDefaultPassword, + KestrelCertificatesDefaultPassword.Replace(DefaultPassword, + RandomPassword)); + } + + if (lines[i].Contains(LocalhostPfx)) + { + lines[i] = lines[i].Replace(LocalhostPfx, + LocalhostPfx.Replace(DefaultPassword, + RandomPassword)); + } + + if (lines[i].Contains(DotnetDevCerts)) { - lines[i] = lines[i].Replace(DefaultPassPhrase, RandomPassPhrase); - if (file.Name.EndsWith("Module.cs", StringComparison.OrdinalIgnoreCase) && - file.Content.Contains("openiddict.pfx", StringComparison.OrdinalIgnoreCase)) - { - modules.Add(file.Name); - } + lines[i] = lines[i].Replace(DotnetDevCerts, + DotnetDevCerts.Replace(DefaultPassword, + RandomOpenIddictPassword)); + } + + if (lines[i].Contains(ProductionEncryptionAndSigningCertificate)) + { + lines[i] = lines[i].Replace(ProductionEncryptionAndSigningCertificate, + ProductionEncryptionAndSigningCertificate.Replace(DefaultPassword, + RandomOpenIddictPassword)); + + module = file.Name; } } file.SetLines(lines); } - context.BuildArgs.ExtraProperties.TryAdd(nameof(RandomizeAuthServerPassPhraseStep), string.Empty); - context.BuildArgs.ExtraProperties[nameof(RandomizeAuthServerPassPhraseStep)] += modules.JoinAsString(Environment.NewLine); + if (!module.IsNullOrWhiteSpace()) + { + context.BuildArgs.ExtraProperties[nameof(RandomizeAuthServerPassPhraseStep)] = module; + } } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs index 4f1226eeb1..faf7121dfc 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs @@ -46,6 +46,7 @@ using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.Blazor.Server; using Volo.Abp.TenantManagement.MongoDB; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.Uow; diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs index 9839f0db4a..d73ba01a49 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs @@ -48,6 +48,7 @@ using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.Blazor.Server; using Volo.Abp.TenantManagement.EntityFrameworkCore; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.Validation.Localization; diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyProjectNameHostModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyProjectNameHostModule.cs index c3ad0fb9be..f5160169d4 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyProjectNameHostModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyProjectNameHostModule.cs @@ -40,6 +40,7 @@ using Volo.Abp.SettingManagement.MongoDB; using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.MongoDB; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.Uow; using Volo.Abp.VirtualFileSystem; diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyProjectNameHostModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyProjectNameHostModule.cs index bff738d7db..b76933ce94 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyProjectNameHostModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyProjectNameHostModule.cs @@ -42,6 +42,7 @@ using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.EntityFrameworkCore; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.Uow; using Volo.Abp.VirtualFileSystem; diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs index 285a24a485..7a99e10635 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs @@ -40,6 +40,7 @@ using Volo.Abp.SettingManagement.MongoDB; using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.MongoDB; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.Uow; using Volo.Abp.Validation.Localization; diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs index 41c8306a31..6705902ed4 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs @@ -43,6 +43,7 @@ using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.EntityFrameworkCore; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.Validation.Localization; using Volo.Abp.VirtualFileSystem; diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs index a0178d34cf..6e702fd36c 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs @@ -42,6 +42,7 @@ using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.MongoDB; using Volo.Abp.TenantManagement.Web; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.Uow; diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs index 1174dacea9..43c60fc6a7 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs @@ -44,6 +44,7 @@ using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.Web; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.Validation.Localization; diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs index f1ebc379c2..104fe9fed6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs @@ -31,6 +31,7 @@ using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.DistributedLocking; using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.UI; using Volo.Abp.VirtualFileSystem; diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs index 42f263d23c..e13c32cbf4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs @@ -37,6 +37,7 @@ using Volo.Abp.Modularity; using Volo.Abp.SettingManagement.Blazor.Server; using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement.Blazor.Server; +using Volo.Abp.OpenIddict; using Volo.Abp.UI; using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation.Urls; diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs index 1e04bf1a1e..f9c8d6a1c2 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -33,6 +33,7 @@ using Volo.Abp.PermissionManagement.Web; using Volo.Abp.SettingManagement.Web; using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement.Web; +using Volo.Abp.OpenIddict; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.UI; using Volo.Abp.UI.Navigation;