diff --git a/IdentityServer/v7/Apis/SimpleApi/Program.cs b/IdentityServer/v7/Apis/SimpleApi/Program.cs index fd8a77d3..cab97059 100755 --- a/IdentityServer/v7/Apis/SimpleApi/Program.cs +++ b/IdentityServer/v7/Apis/SimpleApi/Program.cs @@ -1,26 +1,11 @@ // Copyright (c) Duende Software. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. - -using Serilog; -using Serilog.Events; -using Serilog.Sinks.SystemConsole.Themes; - Console.Title = "Simple API"; -Log.Logger = new LoggerConfiguration() - .MinimumLevel.Verbose() - .MinimumLevel.Override("Microsoft", LogEventLevel.Information) - .MinimumLevel.Override("System", LogEventLevel.Information) - .MinimumLevel.Override("Microsoft.AspNetCore.Authentication", LogEventLevel.Information) - .Enrich.FromLogContext() - .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Code) - .CreateLogger(); var builder = WebApplication.CreateBuilder(args); builder.AddServiceDefaults(); -builder.Services.AddSerilog(); - builder.Services.AddControllers(); // Attention: This API will accept any access token from the authority in this configuration diff --git a/IdentityServer/v7/Apis/SimpleApi/SimpleApi.csproj b/IdentityServer/v7/Apis/SimpleApi/SimpleApi.csproj index 58de23a3..08761b05 100755 --- a/IdentityServer/v7/Apis/SimpleApi/SimpleApi.csproj +++ b/IdentityServer/v7/Apis/SimpleApi/SimpleApi.csproj @@ -7,7 +7,6 @@ - diff --git a/IdentityServer/v7/Configuration/IdentityServerHost/Program.cs b/IdentityServer/v7/Configuration/IdentityServerHost/Program.cs index 36263979..03346cbb 100644 --- a/IdentityServer/v7/Configuration/IdentityServerHost/Program.cs +++ b/IdentityServer/v7/Configuration/IdentityServerHost/Program.cs @@ -5,42 +5,22 @@ using IdentityServer; using Microsoft.Extensions.Hosting; -Console.Title = "IdentityServer Host"; +var builder = WebApplication.CreateBuilder(args); -try -{ - var builder = WebApplication.CreateBuilder(args); - - builder.AddServiceDefaults(); +builder.AddServiceDefaults(); - var app = builder - .ConfigureServices() - .ConfigurePipeline(); +var app = builder + .ConfigureServices() + .ConfigurePipeline(); - // this seeding is only for the template to bootstrap the DB and users. - // in production you will likely want a different approach. - if (args.Contains("/seed")) - { - Console.WriteLine("Seeding database..."); - SeedData.EnsureSeedData(app); - Console.WriteLine("Done seeding database. Exiting."); - return; - } - - app.Run(); -} -catch (Exception ex) when ( - // https://github.com/dotnet/runtime/issues/60600 - ex.GetType().Name is not "StopTheHostException" - // HostAbortedException was added in .NET 7, but since we target .NET 6 we - // need to do it this way until we target .NET 8 - && ex.GetType().Name is not "HostAbortedException" - ) +// this seeding is only for the template to bootstrap the DB and users. +// in production you will likely want a different approach. +if (args.Contains("/seed")) { - Console.WriteLine("Unhandled exception"); - Console.WriteLine(ex); -} -finally -{ - Console.WriteLine("Shut down complete"); + Console.WriteLine("Seeding database..."); + SeedData.EnsureSeedData(app); + Console.WriteLine("Done seeding database. Exiting."); + return; } + +app.Run(); diff --git a/IdentityServer/v7/Configuration/PipelineRegistration/Configuration/Configuration.csproj b/IdentityServer/v7/Configuration/PipelineRegistration/Configuration/Configuration.csproj index 51b159d3..a0c9bc50 100644 --- a/IdentityServer/v7/Configuration/PipelineRegistration/Configuration/Configuration.csproj +++ b/IdentityServer/v7/Configuration/PipelineRegistration/Configuration/Configuration.csproj @@ -6,6 +6,10 @@ enable + + + + diff --git a/IdentityServer/v7/Configuration/PipelineRegistration/Configuration/Program.cs b/IdentityServer/v7/Configuration/PipelineRegistration/Configuration/Program.cs index 2f995578..d63ed005 100644 --- a/IdentityServer/v7/Configuration/PipelineRegistration/Configuration/Program.cs +++ b/IdentityServer/v7/Configuration/PipelineRegistration/Configuration/Program.cs @@ -7,9 +7,8 @@ using Duende.IdentityServer.EntityFramework.Storage; using Microsoft.EntityFrameworkCore; -Console.Title = "Configuration API"; - var builder = WebApplication.CreateBuilder(args); +builder.AddServiceDefaults(); builder.Services.AddIdentityServerConfiguration(opt => { }) .AddClientConfigurationStore(); @@ -40,6 +39,8 @@ var app = builder.Build(); +app.MapDefaultEndpoints(); + app.UseAuthentication(); app.UseAuthorization(); app.MapDynamicClientRegistration().RequireAuthorization("DCR"); diff --git a/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/AppHost.cs b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/AppHost.cs new file mode 100644 index 00000000..a1c73dcb --- /dev/null +++ b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/AppHost.cs @@ -0,0 +1,54 @@ +var builder = DistributedApplication.CreateBuilder(args); + +var idp = builder.AddProject("identityserverhost"); + +var configuration = builder.AddProject("configuration-api") + .WaitFor(idp); + +builder.AddProject("simple-api") + .WaitFor(idp); + +builder.AddProject("console-dcr-client") + .WaitFor(idp) + .WaitFor(configuration); + +idp.WithCommand( + name: "seed", + displayName: "Seed Database", + executeCommand: async (context) => + { + var projectMetadata = idp.Resource.GetProjectMetadata(); + var projectPath = projectMetadata.ProjectPath; + var process = new System.Diagnostics.Process + { + StartInfo = new System.Diagnostics.ProcessStartInfo + { + FileName = "dotnet", + Arguments = $"run --project \"{projectPath}\" --no-build -- /seed", + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + } + }; + + process.Start(); + await process.WaitForExitAsync(context.CancellationToken); + + if (process.ExitCode == 0) + { + return CommandResults.Success(); + } + else + { + var error = await process.StandardError.ReadToEndAsync(); + return CommandResults.Failure(error); + } + }, + commandOptions: new CommandOptions + { + IconName = "DatabaseArrowUp", + IsHighlighted = true + }); + +builder.Build().Run(); diff --git a/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/PipelineRegistration.AppHost.csproj b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/PipelineRegistration.AppHost.csproj new file mode 100644 index 00000000..34970118 --- /dev/null +++ b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/PipelineRegistration.AppHost.csproj @@ -0,0 +1,21 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + + + + + + + diff --git a/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/Properties/launchSettings.json b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/Properties/launchSettings.json new file mode 100644 index 00000000..54d84ee5 --- /dev/null +++ b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/Properties/launchSettings.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:17149;http://localhost:15392", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21177", + "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23178", + "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22126" + } + }, + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:15392", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19222", + "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18151", + "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20036" + } + } + } +} diff --git a/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.Development.json b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.json b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.json new file mode 100644 index 00000000..31c092aa --- /dev/null +++ b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "Aspire.Hosting.Dcp": "Warning" + } + } +} diff --git a/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.sln b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.sln index dbd1cf24..dfc6ef33 100644 --- a/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.sln +++ b/IdentityServer/v7/Configuration/PipelineRegistration/PipelineRegistration.sln @@ -11,30 +11,80 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IdentityServer", "..\Identi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleApi", "..\..\Apis\SimpleApi\SimpleApi.csproj", "{1F141D4D-C27D-4A94-B518-80369AFE33E2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PipelineRegistration.AppHost", "PipelineRegistration.AppHost\PipelineRegistration.AppHost.csproj", "{8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x64.ActiveCfg = Debug|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x64.Build.0 = Debug|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x86.ActiveCfg = Debug|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x86.Build.0 = Debug|Any CPU {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|Any CPU.ActiveCfg = Release|Any CPU {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|Any CPU.Build.0 = Release|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x64.ActiveCfg = Release|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x64.Build.0 = Release|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x86.ActiveCfg = Release|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x86.Build.0 = Release|Any CPU {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x64.ActiveCfg = Debug|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x64.Build.0 = Debug|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x86.ActiveCfg = Debug|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x86.Build.0 = Debug|Any CPU {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|Any CPU.ActiveCfg = Release|Any CPU {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|Any CPU.Build.0 = Release|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x64.ActiveCfg = Release|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x64.Build.0 = Release|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x86.ActiveCfg = Release|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x86.Build.0 = Release|Any CPU {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|x64.ActiveCfg = Debug|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|x64.Build.0 = Debug|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|x86.ActiveCfg = Debug|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|x86.Build.0 = Debug|Any CPU {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|Any CPU.Build.0 = Release|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|x64.ActiveCfg = Release|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|x64.Build.0 = Release|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|x86.ActiveCfg = Release|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|x86.Build.0 = Release|Any CPU {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|x64.Build.0 = Debug|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|x86.Build.0 = Debug|Any CPU {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|Any CPU.Build.0 = Release|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|x64.ActiveCfg = Release|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|x64.Build.0 = Release|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|x86.ActiveCfg = Release|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|x86.Build.0 = Release|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Debug|x64.ActiveCfg = Debug|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Debug|x64.Build.0 = Debug|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Debug|x86.ActiveCfg = Debug|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Debug|x86.Build.0 = Debug|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Release|Any CPU.Build.0 = Release|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Release|x64.ActiveCfg = Release|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Release|x64.Build.0 = Release|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Release|x86.ActiveCfg = Release|Any CPU + {8F7BBD2B-6C13-409F-8442-C8DF4E942FB6}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection EndGlobal diff --git a/IdentityServer/v8/Apis/SimpleApi/Program.cs b/IdentityServer/v8/Apis/SimpleApi/Program.cs index fd8a77d3..5aea5b85 100755 --- a/IdentityServer/v8/Apis/SimpleApi/Program.cs +++ b/IdentityServer/v8/Apis/SimpleApi/Program.cs @@ -1,26 +1,10 @@ // Copyright (c) Duende Software. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. -using Serilog; -using Serilog.Events; -using Serilog.Sinks.SystemConsole.Themes; - -Console.Title = "Simple API"; -Log.Logger = new LoggerConfiguration() - .MinimumLevel.Verbose() - .MinimumLevel.Override("Microsoft", LogEventLevel.Information) - .MinimumLevel.Override("System", LogEventLevel.Information) - .MinimumLevel.Override("Microsoft.AspNetCore.Authentication", LogEventLevel.Information) - .Enrich.FromLogContext() - .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Code) - .CreateLogger(); - var builder = WebApplication.CreateBuilder(args); builder.AddServiceDefaults(); -builder.Services.AddSerilog(); - builder.Services.AddControllers(); // Attention: This API will accept any access token from the authority in this configuration diff --git a/IdentityServer/v8/Apis/SimpleApi/SimpleApi.csproj b/IdentityServer/v8/Apis/SimpleApi/SimpleApi.csproj index 58de23a3..08761b05 100755 --- a/IdentityServer/v8/Apis/SimpleApi/SimpleApi.csproj +++ b/IdentityServer/v8/Apis/SimpleApi/SimpleApi.csproj @@ -7,7 +7,6 @@ - diff --git a/IdentityServer/v8/Configuration/IdentityServerHost/Program.cs b/IdentityServer/v8/Configuration/IdentityServerHost/Program.cs index 36263979..03346cbb 100644 --- a/IdentityServer/v8/Configuration/IdentityServerHost/Program.cs +++ b/IdentityServer/v8/Configuration/IdentityServerHost/Program.cs @@ -5,42 +5,22 @@ using IdentityServer; using Microsoft.Extensions.Hosting; -Console.Title = "IdentityServer Host"; +var builder = WebApplication.CreateBuilder(args); -try -{ - var builder = WebApplication.CreateBuilder(args); - - builder.AddServiceDefaults(); +builder.AddServiceDefaults(); - var app = builder - .ConfigureServices() - .ConfigurePipeline(); +var app = builder + .ConfigureServices() + .ConfigurePipeline(); - // this seeding is only for the template to bootstrap the DB and users. - // in production you will likely want a different approach. - if (args.Contains("/seed")) - { - Console.WriteLine("Seeding database..."); - SeedData.EnsureSeedData(app); - Console.WriteLine("Done seeding database. Exiting."); - return; - } - - app.Run(); -} -catch (Exception ex) when ( - // https://github.com/dotnet/runtime/issues/60600 - ex.GetType().Name is not "StopTheHostException" - // HostAbortedException was added in .NET 7, but since we target .NET 6 we - // need to do it this way until we target .NET 8 - && ex.GetType().Name is not "HostAbortedException" - ) +// this seeding is only for the template to bootstrap the DB and users. +// in production you will likely want a different approach. +if (args.Contains("/seed")) { - Console.WriteLine("Unhandled exception"); - Console.WriteLine(ex); -} -finally -{ - Console.WriteLine("Shut down complete"); + Console.WriteLine("Seeding database..."); + SeedData.EnsureSeedData(app); + Console.WriteLine("Done seeding database. Exiting."); + return; } + +app.Run(); diff --git a/IdentityServer/v8/Configuration/PipelineRegistration/Configuration/Configuration.csproj b/IdentityServer/v8/Configuration/PipelineRegistration/Configuration/Configuration.csproj index 51b159d3..a0c9bc50 100644 --- a/IdentityServer/v8/Configuration/PipelineRegistration/Configuration/Configuration.csproj +++ b/IdentityServer/v8/Configuration/PipelineRegistration/Configuration/Configuration.csproj @@ -6,6 +6,10 @@ enable + + + + diff --git a/IdentityServer/v8/Configuration/PipelineRegistration/Configuration/Program.cs b/IdentityServer/v8/Configuration/PipelineRegistration/Configuration/Program.cs index 2f995578..d63ed005 100644 --- a/IdentityServer/v8/Configuration/PipelineRegistration/Configuration/Program.cs +++ b/IdentityServer/v8/Configuration/PipelineRegistration/Configuration/Program.cs @@ -7,9 +7,8 @@ using Duende.IdentityServer.EntityFramework.Storage; using Microsoft.EntityFrameworkCore; -Console.Title = "Configuration API"; - var builder = WebApplication.CreateBuilder(args); +builder.AddServiceDefaults(); builder.Services.AddIdentityServerConfiguration(opt => { }) .AddClientConfigurationStore(); @@ -40,6 +39,8 @@ var app = builder.Build(); +app.MapDefaultEndpoints(); + app.UseAuthentication(); app.UseAuthorization(); app.MapDynamicClientRegistration().RequireAuthorization("DCR"); diff --git a/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/AppHost.cs b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/AppHost.cs new file mode 100644 index 00000000..a1c73dcb --- /dev/null +++ b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/AppHost.cs @@ -0,0 +1,54 @@ +var builder = DistributedApplication.CreateBuilder(args); + +var idp = builder.AddProject("identityserverhost"); + +var configuration = builder.AddProject("configuration-api") + .WaitFor(idp); + +builder.AddProject("simple-api") + .WaitFor(idp); + +builder.AddProject("console-dcr-client") + .WaitFor(idp) + .WaitFor(configuration); + +idp.WithCommand( + name: "seed", + displayName: "Seed Database", + executeCommand: async (context) => + { + var projectMetadata = idp.Resource.GetProjectMetadata(); + var projectPath = projectMetadata.ProjectPath; + var process = new System.Diagnostics.Process + { + StartInfo = new System.Diagnostics.ProcessStartInfo + { + FileName = "dotnet", + Arguments = $"run --project \"{projectPath}\" --no-build -- /seed", + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + } + }; + + process.Start(); + await process.WaitForExitAsync(context.CancellationToken); + + if (process.ExitCode == 0) + { + return CommandResults.Success(); + } + else + { + var error = await process.StandardError.ReadToEndAsync(); + return CommandResults.Failure(error); + } + }, + commandOptions: new CommandOptions + { + IconName = "DatabaseArrowUp", + IsHighlighted = true + }); + +builder.Build().Run(); diff --git a/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/PipelineRegistration.AppHost.csproj b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/PipelineRegistration.AppHost.csproj new file mode 100644 index 00000000..34970118 --- /dev/null +++ b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/PipelineRegistration.AppHost.csproj @@ -0,0 +1,21 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + + + + + + + diff --git a/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/Properties/launchSettings.json b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/Properties/launchSettings.json new file mode 100644 index 00000000..7a534f48 --- /dev/null +++ b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/Properties/launchSettings.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:17249;http://localhost:15492", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21178", + "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23179", + "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22127" + } + }, + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:15492", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19223", + "ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18152", + "ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20037" + } + } + } +} diff --git a/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.Development.json b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.json b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.json new file mode 100644 index 00000000..31c092aa --- /dev/null +++ b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.AppHost/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "Aspire.Hosting.Dcp": "Warning" + } + } +} diff --git a/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.sln b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.sln index dbd1cf24..346e7a2e 100644 --- a/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.sln +++ b/IdentityServer/v8/Configuration/PipelineRegistration/PipelineRegistration.sln @@ -11,30 +11,80 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IdentityServer", "..\Identi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleApi", "..\..\Apis\SimpleApi\SimpleApi.csproj", "{1F141D4D-C27D-4A94-B518-80369AFE33E2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PipelineRegistration.AppHost", "PipelineRegistration.AppHost\PipelineRegistration.AppHost.csproj", "{00F3B583-6AB1-4C5A-A0DD-30234E137282}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x64.ActiveCfg = Debug|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x64.Build.0 = Debug|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x86.ActiveCfg = Debug|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Debug|x86.Build.0 = Debug|Any CPU {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|Any CPU.ActiveCfg = Release|Any CPU {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|Any CPU.Build.0 = Release|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x64.ActiveCfg = Release|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x64.Build.0 = Release|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x86.ActiveCfg = Release|Any CPU + {CD4E158A-9173-49A5-BF10-F5CAE6E5D3B1}.Release|x86.Build.0 = Release|Any CPU {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x64.ActiveCfg = Debug|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x64.Build.0 = Debug|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x86.ActiveCfg = Debug|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Debug|x86.Build.0 = Debug|Any CPU {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|Any CPU.ActiveCfg = Release|Any CPU {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|Any CPU.Build.0 = Release|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x64.ActiveCfg = Release|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x64.Build.0 = Release|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x86.ActiveCfg = Release|Any CPU + {D134466E-58AE-4787-984B-FB6F95EEA969}.Release|x86.Build.0 = Release|Any CPU {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|x64.ActiveCfg = Debug|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|x64.Build.0 = Debug|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|x86.ActiveCfg = Debug|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Debug|x86.Build.0 = Debug|Any CPU {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|Any CPU.Build.0 = Release|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|x64.ActiveCfg = Release|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|x64.Build.0 = Release|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|x86.ActiveCfg = Release|Any CPU + {E0A37C31-D760-4CE0-925B-756BDDE6EFAA}.Release|x86.Build.0 = Release|Any CPU {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|x64.Build.0 = Debug|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Debug|x86.Build.0 = Debug|Any CPU {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|Any CPU.Build.0 = Release|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|x64.ActiveCfg = Release|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|x64.Build.0 = Release|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|x86.ActiveCfg = Release|Any CPU + {1F141D4D-C27D-4A94-B518-80369AFE33E2}.Release|x86.Build.0 = Release|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Debug|x64.ActiveCfg = Debug|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Debug|x64.Build.0 = Debug|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Debug|x86.ActiveCfg = Debug|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Debug|x86.Build.0 = Debug|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Release|Any CPU.Build.0 = Release|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Release|x64.ActiveCfg = Release|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Release|x64.Build.0 = Release|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Release|x86.ActiveCfg = Release|Any CPU + {00F3B583-6AB1-4C5A-A0DD-30234E137282}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection EndGlobal diff --git a/samples.slnx b/samples.slnx index 79f9f43b..27336a58 100644 --- a/samples.slnx +++ b/samples.slnx @@ -236,6 +236,7 @@ + @@ -454,6 +455,7 @@ +