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 @@
+