diff --git a/IdentityServer/v7/Diagnostics/Aspire/Aspire.ApiService/Aspire.ApiService.csproj b/IdentityServer/v7/Diagnostics/Aspire/Aspire.ApiService/Aspire.ApiService.csproj
index 41ca59c9..122315fd 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/Aspire.ApiService/Aspire.ApiService.csproj
+++ b/IdentityServer/v7/Diagnostics/Aspire/Aspire.ApiService/Aspire.ApiService.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/IdentityServer/v7/Diagnostics/Aspire/Aspire.ApiService/Properties/launchSettings.json b/IdentityServer/v7/Diagnostics/Aspire/Aspire.ApiService/Properties/launchSettings.json
index edf6ad23..bd2b6ca8 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/Aspire.ApiService/Properties/launchSettings.json
+++ b/IdentityServer/v7/Diagnostics/Aspire/Aspire.ApiService/Properties/launchSettings.json
@@ -4,7 +4,7 @@
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
- "launchBrowser": true,
+ "launchBrowser": false,
"launchUrl": "weatherforecast",
"applicationUrl": "https://localhost:5325",
"environmentVariables": {
diff --git a/IdentityServer/v7/Diagnostics/Aspire/Aspire.AppHost/Aspire.AppHost.csproj b/IdentityServer/v7/Diagnostics/Aspire/Aspire.AppHost/Aspire.AppHost.csproj
index e8fd4ccb..e329b371 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/Aspire.AppHost/Aspire.AppHost.csproj
+++ b/IdentityServer/v7/Diagnostics/Aspire/Aspire.AppHost/Aspire.AppHost.csproj
@@ -1,6 +1,6 @@
-
+
Exe
@@ -15,9 +15,4 @@
-
-
-
-
-
diff --git a/IdentityServer/v7/Diagnostics/Aspire/Aspire.AppHost/Program.cs b/IdentityServer/v7/Diagnostics/Aspire/Aspire.AppHost/Program.cs
index 51d99edf..3fca5d7a 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/Aspire.AppHost/Program.cs
+++ b/IdentityServer/v7/Diagnostics/Aspire/Aspire.AppHost/Program.cs
@@ -1,10 +1,16 @@
var builder = DistributedApplication.CreateBuilder(args);
-var apiService = builder.AddProject("apiservice");
+var identityServer = builder.AddProject("identityserver")
+ .WithExternalHttpEndpoints();
-builder.AddProject("webfrontend")
- .WithReference(apiService);
+var apiService = builder.AddProject("apiservice")
+ .WithReference(identityServer);
-builder.AddProject("identityserver");
+var webFrontend = builder.AddProject("webfrontend")
+ .WithReference(apiService)
+ .WithReference(identityServer)
+ .WithExternalHttpEndpoints();
+
+identityServer.WithReference(webFrontend);
builder.Build().Run();
diff --git a/IdentityServer/v7/Diagnostics/Aspire/Aspire.ServiceDefaults/Aspire.ServiceDefaults.csproj b/IdentityServer/v7/Diagnostics/Aspire/Aspire.ServiceDefaults/Aspire.ServiceDefaults.csproj
index ca559228..e0f3d2c6 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/Aspire.ServiceDefaults/Aspire.ServiceDefaults.csproj
+++ b/IdentityServer/v7/Diagnostics/Aspire/Aspire.ServiceDefaults/Aspire.ServiceDefaults.csproj
@@ -11,14 +11,14 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
+
diff --git a/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Aspire.Web.csproj b/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Aspire.Web.csproj
index 2640a905..9e5040b5 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Aspire.Web.csproj
+++ b/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Aspire.Web.csproj
@@ -8,8 +8,8 @@
-
-
+
+
diff --git a/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Program.cs b/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Program.cs
index 4a4bdcfd..8eba70c9 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Program.cs
+++ b/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Program.cs
@@ -1,4 +1,5 @@
using Aspire.Web;
+using Duende.AccessTokenManagement.OpenIdConnect;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
@@ -15,7 +16,7 @@
.AddCookie()
.AddOpenIdConnect(opt =>
{
- opt.Authority = "https://localhost:5001";
+ opt.Authority = builder.Configuration["services:identityserver:https:0"];
opt.ClientId = "web";
opt.ClientSecret = "49C1A7E1-0C79-4A89-A3D6-A37998FB86B0";
diff --git a/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Properties/launchSettings.json b/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Properties/launchSettings.json
index 6b3a39b0..015ababb 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Properties/launchSettings.json
+++ b/IdentityServer/v7/Diagnostics/Aspire/Aspire.Web/Properties/launchSettings.json
@@ -4,7 +4,7 @@
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
- "launchBrowser": true,
+ "launchBrowser": false,
"applicationUrl": "https://localhost:5014",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
diff --git a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Config.cs b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Config.cs
index 921f7c8d..db12cff7 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Config.cs
+++ b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Config.cs
@@ -15,19 +15,21 @@ public static class Config
new ApiScope("weather"),
];
- public static IEnumerable Clients =>
+ public static IEnumerable GetClients(string? webUrl = "https://localhost:5014")
+ {
+ return
[
// interactive client using code flow + pkce
new Client
{
ClientId = "web",
ClientSecrets = { new Secret("49C1A7E1-0C79-4A89-A3D6-A37998FB86B0".Sha256()) },
-
+
AllowedGrantTypes = GrantTypes.Code,
- RedirectUris = { "https://localhost:5014/signin-oidc" },
- FrontChannelLogoutUri = "https://localhost:5014/signout-oidc",
- PostLogoutRedirectUris = { "https://localhost:5014/signout-callback-oidc" },
+ RedirectUris = { $"{webUrl}/signin-oidc" },
+ FrontChannelLogoutUri = $"{webUrl}/signout-oidc",
+ PostLogoutRedirectUris = { $"{webUrl}/signout-callback-oidc" },
AllowOfflineAccess = true,
AllowedScopes = { "openid", "profile", "weather" },
@@ -38,4 +40,6 @@ public static class Config
AccessTokenLifetime = 70
},
];
+ }
+
}
diff --git a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/HostingExtensions.cs b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/HostingExtensions.cs
index 4954f0fd..c98cc272 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/HostingExtensions.cs
+++ b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/HostingExtensions.cs
@@ -27,7 +27,9 @@ public static WebApplication ConfigureServices(this WebApplicationBuilder builde
// in-memory, code config
isBuilder.AddInMemoryIdentityResources(Config.IdentityResources);
isBuilder.AddInMemoryApiScopes(Config.ApiScopes);
- isBuilder.AddInMemoryClients(Config.Clients);
+
+ var webUrl = builder.Configuration["services:webfrontend:https:0"];
+ isBuilder.AddInMemoryClients(Config.GetClients(webUrl));
// if you want to use server-side sessions: https://blog.duendesoftware.com/posts/20220406_session_management/
@@ -67,6 +69,8 @@ public static WebApplication ConfigureServices(this WebApplicationBuilder builde
public static WebApplication ConfigurePipeline(this WebApplication app)
{
+ app.MapDefaultEndpoints();
+
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
diff --git a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/IdentityServer.csproj b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/IdentityServer.csproj
index a1c6b113..c040ff8c 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/IdentityServer.csproj
+++ b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/IdentityServer.csproj
@@ -7,8 +7,8 @@
-
-
+
+
diff --git a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Pages/Diagnostics/ViewModel.cs b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Pages/Diagnostics/ViewModel.cs
index 5a57e6b1..34d3e695 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Pages/Diagnostics/ViewModel.cs
+++ b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Pages/Diagnostics/ViewModel.cs
@@ -1,6 +1,7 @@
// Copyright (c) Duende Software. All rights reserved.
// See LICENSE in the project root for license information.
+using System.Buffers.Text;
using Duende.IdentityModel;
using Microsoft.AspNetCore.Authentication;
using System.Text;
@@ -18,7 +19,7 @@ public ViewModel(AuthenticateResult result)
{
if (encoded != null)
{
- var bytes = Base64Url.Decode(encoded);
+ var bytes = Base64Url.DecodeFromChars(encoded);
var value = Encoding.UTF8.GetString(bytes);
Clients = JsonSerializer.Deserialize(value) ?? Enumerable.Empty();
return;
diff --git a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Properties/launchSettings.json b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Properties/launchSettings.json
index f40feb3d..91980587 100644
--- a/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Properties/launchSettings.json
+++ b/IdentityServer/v7/Diagnostics/Aspire/IdentityServer/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"SelfHost": {
"commandName": "Project",
- "launchBrowser": true,
+ "launchBrowser": false,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},