diff --git a/IdentityServer/v7/UserInteraction/Ciba/.vscode/launch.json b/IdentityServer/v7/UserInteraction/Ciba/.vscode/launch.json
new file mode 100644
index 00000000..c1fb80d6
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/.vscode/launch.json
@@ -0,0 +1,58 @@
+{
+ "version": "0.2.0",
+ "compounds": [
+ {
+ "name": "Run All",
+ "configurations": ["Api","Client","IdentityServerHost"],
+ "presentation": {
+ "group": "10-compounds",
+ "order": 1
+ }
+ }
+ ],
+ "configurations": [
+ {
+ "name": "IdentityServerHost",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build-identityserver",
+ "program": "${workspaceFolder}/IdentityServerHost/bin/Debug/net8.0/IdentityServerHost.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}/IdentityServerHost",
+ "env": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "console": "externalTerminal"
+ },
+ {
+ "name": "Client",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build-client",
+ "program": "${workspaceFolder}/Client/bin/Debug/net8.0/Client.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}/Client",
+ "serverReadyAction": {
+ "action": "openExternally",
+ "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
+ },
+ "env": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "console": "externalTerminal"
+ },
+ {
+ "name": "Api",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build-api",
+ "program": "${workspaceFolder}/Api/bin/Debug/net8.0/Api.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}/Api",
+ "env": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "console": "externalTerminal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/.vscode/tasks.json b/IdentityServer/v7/UserInteraction/Ciba/.vscode/tasks.json
new file mode 100644
index 00000000..b899d72f
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/.vscode/tasks.json
@@ -0,0 +1,41 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "build-identityserver",
+ "type": "process",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "${workspaceFolder}/IdentityServerHost/IdentityServerHost.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "build-client",
+ "type": "process",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "${workspaceFolder}/Client/Client.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "build-api",
+ "type": "process",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "${workspaceFolder}/Api/Api.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/SimpleApi.csproj b/IdentityServer/v7/UserInteraction/Ciba/Api/Api.csproj
old mode 100755
new mode 100644
similarity index 57%
rename from IdentityServer/v7/UserInteraction/Ciba/SimpleApi/SimpleApi.csproj
rename to IdentityServer/v7/UserInteraction/Ciba/Api/Api.csproj
index 72f6c576..336096b3
--- a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/SimpleApi.csproj
+++ b/IdentityServer/v7/UserInteraction/Ciba/Api/Api.csproj
@@ -1,12 +1,12 @@
- net5.0
+ net8.0
-
-
+
+
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/Api/Constants.cs b/IdentityServer/v7/UserInteraction/Ciba/Api/Constants.cs
new file mode 100644
index 00000000..e45717db
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/Api/Constants.cs
@@ -0,0 +1,7 @@
+namespace Api;
+
+public class Constants
+{
+ public const string Authority = "https://localhost:5001";
+ public const string SampleApi = "https://localhost:5005/";
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/Api/IdentityController.cs b/IdentityServer/v7/UserInteraction/Ciba/Api/IdentityController.cs
new file mode 100644
index 00000000..21183a40
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/Api/IdentityController.cs
@@ -0,0 +1,27 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using System.Linq;
+
+namespace Api;
+
+[Route("identity")]
+public class IdentityController : ControllerBase
+{
+ private readonly ILogger _logger;
+
+ public IdentityController(ILogger logger)
+ {
+ _logger = logger;
+ }
+
+ // this action simply echoes the claims back to the client
+ [HttpGet]
+ public ActionResult Get()
+ {
+ var claims = User.Claims.Select(c => new { c.Type, c.Value });
+ _logger.LogInformation("claims: {claims}", claims);
+
+ return new JsonResult(claims);
+ }
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/Api/Program.cs b/IdentityServer/v7/UserInteraction/Ciba/Api/Program.cs
new file mode 100644
index 00000000..84cb688f
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/Api/Program.cs
@@ -0,0 +1,34 @@
+using System;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Hosting;
+using Serilog;
+using Serilog.Sinks.SystemConsole.Themes;
+
+namespace Api;
+
+public class Program
+{
+ public static void Main(string[] args)
+ {
+ Console.Title = "API";
+
+ BuildWebHost(args).Run();
+ }
+
+ public static IHost BuildWebHost(string[] args)
+ {
+ Log.Logger = new LoggerConfiguration()
+ .MinimumLevel.Information()
+ .Enrich.FromLogContext()
+ .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Code)
+ .CreateLogger();
+
+ return Host.CreateDefaultBuilder(args)
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseStartup();
+ })
+ .UseSerilog()
+ .Build();
+ }
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Properties/launchSettings.json b/IdentityServer/v7/UserInteraction/Ciba/Api/Properties/launchSettings.json
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Properties/launchSettings.json
rename to IdentityServer/v7/UserInteraction/Ciba/Api/Properties/launchSettings.json
diff --git a/IdentityServer/v7/UserInteraction/Ciba/Api/Startup.cs b/IdentityServer/v7/UserInteraction/Ciba/Api/Startup.cs
new file mode 100644
index 00000000..0992cfab
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/Api/Startup.cs
@@ -0,0 +1,41 @@
+using System.IdentityModel.Tokens.Jwt;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.DependencyInjection;
+
+
+namespace Api;
+
+public class Startup
+{
+ public Startup()
+ {
+ JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
+ }
+
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddControllers();
+
+ // this API will accept any access token from the authority
+ services.AddAuthentication("token")
+ .AddJwtBearer("token", options =>
+ {
+ options.Authority = Constants.Authority;
+ options.TokenValidationParameters.ValidateAudience = false;
+
+ options.TokenValidationParameters.ValidTypes = new[] { "at+jwt" };
+ });
+ }
+
+ public void Configure(IApplicationBuilder app)
+ {
+ app.UseRouting();
+ app.UseAuthentication();
+ app.UseAuthorization();
+
+ app.UseEndpoints(endpoints =>
+ {
+ endpoints.MapControllers().RequireAuthorization();
+ });
+ }
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/ConsoleCibaClient.csproj b/IdentityServer/v7/UserInteraction/Ciba/Client/Client.csproj
old mode 100755
new mode 100644
similarity index 82%
rename from IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/ConsoleCibaClient.csproj
rename to IdentityServer/v7/UserInteraction/Ciba/Client/Client.csproj
index e37d4b21..6154708e
--- a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/ConsoleCibaClient.csproj
+++ b/IdentityServer/v7/UserInteraction/Ciba/Client/Client.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net8.0
Exe
diff --git a/IdentityServer/v7/UserInteraction/Ciba/Client/ConsoleExtensions.cs b/IdentityServer/v7/UserInteraction/Ciba/Client/ConsoleExtensions.cs
new file mode 100644
index 00000000..5bc6788e
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/Client/ConsoleExtensions.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Diagnostics;
+
+namespace Clients;
+
+public static class ConsoleExtensions
+{
+ ///
+ /// Writes green text to the console.
+ ///
+ /// The text.
+ [DebuggerStepThrough]
+ public static void ConsoleGreen(this string text)
+ {
+ text.ColoredWriteLine(ConsoleColor.Green);
+ }
+
+ ///
+ /// Writes red text to the console.
+ ///
+ /// The text.
+ [DebuggerStepThrough]
+ public static void ConsoleRed(this string text)
+ {
+ text.ColoredWriteLine(ConsoleColor.Red);
+ }
+
+ ///
+ /// Writes yellow text to the console.
+ ///
+ /// The text.
+ [DebuggerStepThrough]
+ public static void ConsoleYellow(this string text)
+ {
+ text.ColoredWriteLine(ConsoleColor.Yellow);
+ }
+
+ ///
+ /// Writes out text with the specified ConsoleColor.
+ ///
+ /// The text.
+ /// The color.
+ [DebuggerStepThrough]
+ public static void ColoredWriteLine(this string text, ConsoleColor color)
+ {
+ Console.ForegroundColor = color;
+ Console.WriteLine(text);
+ Console.ResetColor();
+ }
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/Client/Constants.cs b/IdentityServer/v7/UserInteraction/Ciba/Client/Constants.cs
new file mode 100644
index 00000000..0b5dff18
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/Client/Constants.cs
@@ -0,0 +1,7 @@
+namespace Clients;
+
+public class Constants
+{
+ public const string Authority = "https://localhost:5001";
+ public const string SampleApi = "https://localhost:5002/";
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/Client/Program.cs b/IdentityServer/v7/UserInteraction/Ciba/Client/Program.cs
new file mode 100644
index 00000000..3ddf843a
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/Client/Program.cs
@@ -0,0 +1,121 @@
+using Clients;
+using IdentityModel;
+using IdentityModel.Client;
+using System;
+using System.Collections.Generic;
+using System.Net.Http;
+using System.Security.Claims;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Client;
+
+public class Program
+{
+ static IDiscoveryCache _cache = new DiscoveryCache(Constants.Authority);
+
+ public static async Task Main()
+ {
+ Console.Title = "Client";
+
+ var loginResponse = await RequestBackchannelLoginAsync();
+
+ var tokenResponse = await RequestTokenAsync(loginResponse);
+ tokenResponse.Show();
+
+ Console.ReadLine();
+ await CallServiceAsync(tokenResponse.AccessToken);
+ }
+
+ static async Task RequestBackchannelLoginAsync()
+ {
+ var disco = await _cache.GetAsync();
+ if (disco.IsError) throw new Exception(disco.Error);
+
+ var cibaEp = disco.BackchannelAuthenticationEndpoint;
+
+ var username = "alice";
+ var bindingMessage = Guid.NewGuid().ToString("N").Substring(0, 10);
+
+ var req = new BackchannelAuthenticationRequest()
+ {
+ Address = cibaEp,
+ ClientId = "ciba",
+ ClientSecret = "secret",
+ Scope = "openid profile scope1 offline_access",
+ LoginHint = username,
+ //IdTokenHint = "eyJhbGciOiJSUzI1NiIsImtpZCI6IkYyNjZCQzA3NTFBNjIyNDkzMzFDMzI4QUQ1RkIwMkJGIiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo1MDAxIiwibmJmIjoxNjM4NDc3MDE2LCJpYXQiOjE2Mzg0NzcwMTYsImV4cCI6MTYzODQ3NzMxNiwiYXVkIjoiY2liYSIsImFtciI6WyJwd2QiXSwiYXRfaGFzaCI6ImE1angwelVQZ2twczBVS1J5VjBUWmciLCJzaWQiOiIzQTJDQTJDNjdBNTAwQ0I2REY1QzEyRUZDMzlCQTI2MiIsInN1YiI6IjgxODcyNyIsImF1dGhfdGltZSI6MTYzODQ3NzAwOCwiaWRwIjoibG9jYWwifQ.GAIHXYgEtXw5NasR0zPMW3jSKBuWujzwwnXJnfHdulKX-I3r47N0iqHm5v5V0xfLYdrmntjLgmdm0DSvdXswtZ1dh96DqS1zVm6yQ2V0zsA2u8uOt1RG8qtjd5z4Gb_wTvks4rbUiwi008FOZfRuqbMJJDSscy_YdEJqyQahdzkcUnWZwdbY8L2RUTxlAAWQxktpIbaFnxfr8PFQpyTcyQyw0b7xmYd9ogR7JyOff7IJIHPDur0wbRdpI1FDE_VVCgoze8GVAbVxXPtj4CtWHAv07MJxa9SdA_N-lBcrZ3PHTKQ5t1gFXwdQvp3togUJl33mJSru3lqfK36pn8y8ow",
+ BindingMessage = bindingMessage,
+ RequestedExpiry = 200
+ };
+
+ var client = new HttpClient();
+ var response = await client.RequestBackchannelAuthenticationAsync(req);
+
+ if (response.IsError) throw new Exception(response.Error);
+
+ Console.WriteLine($"Login Hint : {username}");
+ Console.WriteLine($"Binding Message : {bindingMessage}");
+ Console.WriteLine($"Authentication Request Id : {response.AuthenticationRequestId}");
+ Console.WriteLine($"Expires In : {response.ExpiresIn}");
+ Console.WriteLine($"Interval : {response.Interval}");
+ Console.WriteLine();
+
+ Console.WriteLine($"\nPress enter to start polling the token endpoint.");
+ Console.ReadLine();
+
+ return response;
+ }
+
+ private static async Task RequestTokenAsync(BackchannelAuthenticationResponse authorizeResponse)
+ {
+ var disco = await _cache.GetAsync();
+ if (disco.IsError) throw new Exception(disco.Error);
+
+ var client = new HttpClient();
+
+ while (true)
+ {
+ var response = await client.RequestBackchannelAuthenticationTokenAsync(new BackchannelAuthenticationTokenRequest
+ {
+ Address = disco.TokenEndpoint,
+ ClientId = "ciba",
+ ClientSecret = "secret",
+ AuthenticationRequestId = authorizeResponse.AuthenticationRequestId
+ });
+
+ if (response.IsError)
+ {
+ if (response.Error == OidcConstants.TokenErrors.AuthorizationPending || response.Error == OidcConstants.TokenErrors.SlowDown)
+ {
+ Console.WriteLine($"{response.Error}...waiting.");
+ Thread.Sleep(authorizeResponse.Interval.Value * 1000);
+ }
+ else
+ {
+ throw new Exception(response.Error);
+ }
+ }
+ else
+ {
+ return response;
+ }
+ }
+ }
+
+ static async Task CallServiceAsync(string token)
+ {
+ var baseAddress = Constants.SampleApi;
+
+ var client = new HttpClient
+ {
+ BaseAddress = new Uri(baseAddress)
+ };
+
+ client.SetBearerToken(token);
+ var response = await client.GetStringAsync("identity");
+
+ "\n\nService claims:".ConsoleGreen();
+ Console.WriteLine(response.PrettyPrintJson());
+ }
+}
diff --git a/IdentityServer/v7/UserInteraction/Ciba/Client/TokenResponseExtensions.cs b/IdentityServer/v7/UserInteraction/Ciba/Client/TokenResponseExtensions.cs
new file mode 100644
index 00000000..363d24fe
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/Client/TokenResponseExtensions.cs
@@ -0,0 +1,52 @@
+using IdentityModel;
+using IdentityModel.Client;
+using System;
+using System.Text;
+using System.Text.Json;
+
+namespace Clients;
+
+public static class TokenResponseExtensions
+{
+ public static void Show(this TokenResponse response)
+ {
+ if (!response.IsError)
+ {
+ "Token response:".ConsoleGreen();
+ Console.WriteLine(response.Json);
+
+ if (response.AccessToken.Contains("."))
+ {
+ "\nAccess Token (decoded):".ConsoleGreen();
+
+ var parts = response.AccessToken.Split('.');
+ var header = parts[0];
+ var payload = parts[1];
+
+ Console.WriteLine(PrettyPrintJson(Encoding.UTF8.GetString(Base64Url.Decode(header))));
+ Console.WriteLine(PrettyPrintJson(Encoding.UTF8.GetString(Base64Url.Decode(payload))));
+ }
+ }
+ else
+ {
+ if (response.ErrorType == ResponseErrorType.Http)
+ {
+ "HTTP error: ".ConsoleGreen();
+ Console.WriteLine(response.Error);
+ "HTTP status code: ".ConsoleGreen();
+ Console.WriteLine(response.HttpStatusCode);
+ }
+ else
+ {
+ "Protocol error response:".ConsoleGreen();
+ Console.WriteLine(response.Raw);
+ }
+ }
+ }
+
+ public static string PrettyPrintJson(this string raw)
+ {
+ var doc = JsonDocument.Parse(raw).RootElement;
+ return JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true });
+ }
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/ConsoleExtensions.cs b/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/ConsoleExtensions.cs
deleted file mode 100755
index 716c2cd8..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/ConsoleExtensions.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using System;
-using System.Diagnostics;
-
-namespace Clients
-{
- public static class ConsoleExtensions
- {
- ///
- /// Writes green text to the console.
- ///
- /// The text.
- [DebuggerStepThrough]
- public static void ConsoleGreen(this string text)
- {
- text.ColoredWriteLine(ConsoleColor.Green);
- }
-
- ///
- /// Writes red text to the console.
- ///
- /// The text.
- [DebuggerStepThrough]
- public static void ConsoleRed(this string text)
- {
- text.ColoredWriteLine(ConsoleColor.Red);
- }
-
- ///
- /// Writes yellow text to the console.
- ///
- /// The text.
- [DebuggerStepThrough]
- public static void ConsoleYellow(this string text)
- {
- text.ColoredWriteLine(ConsoleColor.Yellow);
- }
-
- ///
- /// Writes out text with the specified ConsoleColor.
- ///
- /// The text.
- /// The color.
- [DebuggerStepThrough]
- public static void ColoredWriteLine(this string text, ConsoleColor color)
- {
- Console.ForegroundColor = color;
- Console.WriteLine(text);
- Console.ResetColor();
- }
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/Constants.cs b/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/Constants.cs
deleted file mode 100755
index bdbcdc5d..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/Constants.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Clients
-{
- public class Constants
- {
- public const string Authority = "https://localhost:5001";
- public const string SampleApi = "https://localhost:5002/";
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/Program.cs b/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/Program.cs
deleted file mode 100755
index 692cce93..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/Program.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-using Clients;
-using IdentityModel;
-using IdentityModel.Client;
-using System;
-using System.Collections.Generic;
-using System.Net.Http;
-using System.Security.Claims;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace ConsoleCibaClient
-{
- public class Program
- {
- static IDiscoveryCache _cache = new DiscoveryCache(Constants.Authority);
-
- public static async Task Main()
- {
- Console.Title = "Console CIBA Client";
-
- var loginResponse = await RequestBackchannelLoginAsync();
-
- var tokenResponse = await RequestTokenAsync(loginResponse);
- tokenResponse.Show();
-
- Console.ReadLine();
- await CallServiceAsync(tokenResponse.AccessToken);
- }
-
- static async Task RequestBackchannelLoginAsync()
- {
- var disco = await _cache.GetAsync();
- if (disco.IsError) throw new Exception(disco.Error);
-
- var cibaEp = disco.BackchannelAuthenticationEndpoint;
-
- var username = "alice";
- var bindingMessage = Guid.NewGuid().ToString("N").Substring(0, 10);
-
- var req = new BackchannelAuthenticationRequest()
- {
- Address = cibaEp,
- ClientId = "ciba",
- ClientSecret = "secret",
- Scope = "openid profile scope1 offline_access",
- LoginHint = username,
- //IdTokenHint = "eyJhbGciOiJSUzI1NiIsImtpZCI6IkYyNjZCQzA3NTFBNjIyNDkzMzFDMzI4QUQ1RkIwMkJGIiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo1MDAxIiwibmJmIjoxNjM4NDc3MDE2LCJpYXQiOjE2Mzg0NzcwMTYsImV4cCI6MTYzODQ3NzMxNiwiYXVkIjoiY2liYSIsImFtciI6WyJwd2QiXSwiYXRfaGFzaCI6ImE1angwelVQZ2twczBVS1J5VjBUWmciLCJzaWQiOiIzQTJDQTJDNjdBNTAwQ0I2REY1QzEyRUZDMzlCQTI2MiIsInN1YiI6IjgxODcyNyIsImF1dGhfdGltZSI6MTYzODQ3NzAwOCwiaWRwIjoibG9jYWwifQ.GAIHXYgEtXw5NasR0zPMW3jSKBuWujzwwnXJnfHdulKX-I3r47N0iqHm5v5V0xfLYdrmntjLgmdm0DSvdXswtZ1dh96DqS1zVm6yQ2V0zsA2u8uOt1RG8qtjd5z4Gb_wTvks4rbUiwi008FOZfRuqbMJJDSscy_YdEJqyQahdzkcUnWZwdbY8L2RUTxlAAWQxktpIbaFnxfr8PFQpyTcyQyw0b7xmYd9ogR7JyOff7IJIHPDur0wbRdpI1FDE_VVCgoze8GVAbVxXPtj4CtWHAv07MJxa9SdA_N-lBcrZ3PHTKQ5t1gFXwdQvp3togUJl33mJSru3lqfK36pn8y8ow",
- BindingMessage = bindingMessage,
- RequestedExpiry = 200
- };
-
- var client = new HttpClient();
- var response = await client.RequestBackchannelAuthenticationAsync(req);
-
- if (response.IsError) throw new Exception(response.Error);
-
- Console.WriteLine($"Login Hint : {username}");
- Console.WriteLine($"Binding Message : {bindingMessage}");
- Console.WriteLine($"Authentication Request Id : {response.AuthenticationRequestId}");
- Console.WriteLine($"Expires In : {response.ExpiresIn}");
- Console.WriteLine($"Interval : {response.Interval}");
- Console.WriteLine();
-
- Console.WriteLine($"\nPress enter to start polling the token endpoint.");
- Console.ReadLine();
-
- return response;
- }
-
- private static async Task RequestTokenAsync(BackchannelAuthenticationResponse authorizeResponse)
- {
- var disco = await _cache.GetAsync();
- if (disco.IsError) throw new Exception(disco.Error);
-
- var client = new HttpClient();
-
- while (true)
- {
- var response = await client.RequestBackchannelAuthenticationTokenAsync(new BackchannelAuthenticationTokenRequest
- {
- Address = disco.TokenEndpoint,
- ClientId = "ciba",
- ClientSecret = "secret",
- AuthenticationRequestId = authorizeResponse.AuthenticationRequestId
- });
-
- if (response.IsError)
- {
- if (response.Error == OidcConstants.TokenErrors.AuthorizationPending || response.Error == OidcConstants.TokenErrors.SlowDown)
- {
- Console.WriteLine($"{response.Error}...waiting.");
- Thread.Sleep(authorizeResponse.Interval.Value * 1000);
- }
- else
- {
- throw new Exception(response.Error);
- }
- }
- else
- {
- return response;
- }
- }
- }
-
- static async Task CallServiceAsync(string token)
- {
- var baseAddress = Constants.SampleApi;
-
- var client = new HttpClient
- {
- BaseAddress = new Uri(baseAddress)
- };
-
- client.SetBearerToken(token);
- var response = await client.GetStringAsync("identity");
-
- "\n\nService claims:".ConsoleGreen();
- Console.WriteLine(response.PrettyPrintJson());
- }
- }
-}
diff --git a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/TokenResponseExtensions.cs b/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/TokenResponseExtensions.cs
deleted file mode 100755
index cc92e2f5..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/ConsoleCibaClient/TokenResponseExtensions.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-using IdentityModel;
-using IdentityModel.Client;
-using System;
-using System.Text;
-using System.Text.Json;
-
-namespace Clients
-{
- public static class TokenResponseExtensions
- {
- public static void Show(this TokenResponse response)
- {
- if (!response.IsError)
- {
- "Token response:".ConsoleGreen();
- Console.WriteLine(response.Json);
-
- if (response.AccessToken.Contains("."))
- {
- "\nAccess Token (decoded):".ConsoleGreen();
-
- var parts = response.AccessToken.Split('.');
- var header = parts[0];
- var payload = parts[1];
-
- Console.WriteLine(PrettyPrintJson(Encoding.UTF8.GetString(Base64Url.Decode(header))));
- Console.WriteLine(PrettyPrintJson(Encoding.UTF8.GetString(Base64Url.Decode(payload))));
- }
- }
- else
- {
- if (response.ErrorType == ResponseErrorType.Http)
- {
- "HTTP error: ".ConsoleGreen();
- Console.WriteLine(response.Error);
- "HTTP status code: ".ConsoleGreen();
- Console.WriteLine(response.HttpStatusCode);
- }
- else
- {
- "Protocol error response:".ConsoleGreen();
- Console.WriteLine(response.Raw);
- }
- }
- }
-
- public static string PrettyPrintJson(this string raw)
- {
- var doc = JsonDocument.Parse(raw).RootElement;
- return JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true });
- }
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer.sln b/IdentityServer/v7/UserInteraction/Ciba/IdentityServer.sln
index e411bd31..14a77a54 100755
--- a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer.sln
+++ b/IdentityServer/v7/UserInteraction/Ciba/IdentityServer.sln
@@ -1,13 +1,12 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
+Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 15.0.26124.0
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServerHost", "IdentityServer\IdentityServerHost.csproj", "{0196F924-7B04-4DDC-AB1E-C0DD1D329D5B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServerHost", "IdentityServerHost\IdentityServerHost.csproj", "{0196F924-7B04-4DDC-AB1E-C0DD1D329D5B}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleCibaClient", "ConsoleCibaClient\ConsoleCibaClient.csproj", "{A31E166F-54C4-42E9-95E1-448B5BB8F3B3}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Client", "Client\Client.csproj", "{A31E166F-54C4-42E9-95E1-448B5BB8F3B3}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleApi", "SimpleApi\SimpleApi.csproj", "{194ABC4A-1D22-4C99-B529-E99372976E1A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Api", "Api\Api.csproj", "{194ABC4A-1D22-4C99-B529-E99372976E1A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Clients.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Clients.cs
deleted file mode 100755
index bafd0b4e..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Clients.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) Duende Software. All rights reserved.
-// See LICENSE in the project root for license information.
-
-
-using Duende.IdentityServer.Models;
-using System.Collections.Generic;
-using Duende.IdentityServer;
-
-namespace IdentityServerHost
-{
- public static class Clients
- {
- public static IEnumerable List =>
- new []
- {
- ///////////////////////////////////////////
- // CIBA Sample
- //////////////////////////////////////////
- new Client
- {
- ClientId = "ciba",
- ClientName = "CIBA Client",
- ClientSecrets = { new Secret("secret".Sha256()) },
- AllowedGrantTypes = GrantTypes.Ciba,
- RequireConsent = true,
- AllowOfflineAccess = true,
- AllowedScopes =
- {
- IdentityServerConstants.StandardScopes.OpenId,
- IdentityServerConstants.StandardScopes.Profile,
- "scope1",
- "scope1"
- }
- },
- };
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/IdentityServerHost.csproj b/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/IdentityServerHost.csproj
deleted file mode 100755
index df7d8807..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/IdentityServerHost.csproj
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- net6.0
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Program.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Program.cs
deleted file mode 100755
index acc3f415..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Program.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) Duende Software. All rights reserved.
-// See LICENSE in the project root for license information.
-
-
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.Extensions.Hosting;
-using Serilog;
-using Serilog.Events;
-using Serilog.Sinks.SystemConsole.Themes;
-using System;
-
-namespace IdentityServerHost
-{
- public class Program
- {
- public static int Main(string[] args)
- {
- Log.Logger = new LoggerConfiguration()
- .MinimumLevel.Debug()
- .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
- .MinimumLevel.Override("Microsoft.Hosting.Lifetime", LogEventLevel.Information)
- .MinimumLevel.Override("System", LogEventLevel.Warning)
- .MinimumLevel.Override("Microsoft.AspNetCore.Authentication", LogEventLevel.Information)
- .Enrich.FromLogContext()
- // uncomment to write to Azure diagnostics stream
- //.WriteTo.File(
- // @"D:\home\LogFiles\Application\identityserver.txt",
- // fileSizeLimitBytes: 1_000_000,
- // rollOnFileSizeLimit: true,
- // shared: true,
- // flushToDiskInterval: TimeSpan.FromSeconds(1))
- .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Code)
- .CreateLogger();
-
- try
- {
- Log.Information("Starting host...");
- CreateHostBuilder(args).Build().Run();
- return 0;
- }
- catch (Exception ex)
- {
- Log.Fatal(ex, "Host terminated unexpectedly.");
- return 1;
- }
- finally
- {
- Log.CloseAndFlush();
- }
- }
-
- public static IHostBuilder CreateHostBuilder(string[] args) =>
- Host.CreateDefaultBuilder(args)
- .UseSerilog()
- .ConfigureWebHostDefaults(webBuilder =>
- {
- webBuilder.UseStartup();
- });
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Resources.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Resources.cs
deleted file mode 100755
index 9b2fbd02..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Resources.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) Duende Software. All rights reserved.
-// See LICENSE in the project root for license information.
-
-
-using Duende.IdentityServer.Models;
-using System.Collections.Generic;
-
-namespace IdentityServerHost
-{
- public static class Resources
- {
- public static IEnumerable Identity =>
- new IdentityResource[]
- {
- new IdentityResources.OpenId(),
- new IdentityResources.Profile(),
- };
-
- public static IEnumerable ApiScopes =>
- new ApiScope[]
- {
- new ApiScope("scope1"),
- new ApiScope("scope2"),
- };
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Startup.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Startup.cs
deleted file mode 100755
index ee0d1987..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Startup.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) Duende Software. All rights reserved.
-// See LICENSE in the project root for license information.
-
-
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Hosting;
-
-namespace IdentityServerHost
-{
- public class Startup
- {
- public IWebHostEnvironment Environment { get; }
- public IConfiguration Configuration { get; }
-
- public Startup(IWebHostEnvironment environment, IConfiguration configuration)
- {
- Environment = environment;
- Configuration = configuration;
- }
-
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddRazorPages();
-
- var builder = services.AddIdentityServer(options =>
- {
- options.Events.RaiseErrorEvents = true;
- options.Events.RaiseInformationEvents = true;
- options.Events.RaiseFailureEvents = true;
- options.Events.RaiseSuccessEvents = true;
-
- // see https://docs.duendesoftware.com/identityserver/v5/basics/resources
- options.EmitStaticAudienceClaim = true;
- })
- .AddTestUsers(TestUsers.Users);
-
- builder.AddInMemoryIdentityResources(Resources.Identity);
- builder.AddInMemoryApiScopes(Resources.ApiScopes);
- builder.AddInMemoryClients(Clients.List);
- }
-
- public void Configure(IApplicationBuilder app)
- {
- if (Environment.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
-
- app.UseStaticFiles();
-
- app.UseRouting();
- app.UseIdentityServer();
- app.UseAuthorization();
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapRazorPages();
- });
- }
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Clients.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Clients.cs
new file mode 100644
index 00000000..a66b0af2
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Clients.cs
@@ -0,0 +1,36 @@
+// Copyright (c) Duende Software. All rights reserved.
+// See LICENSE in the project root for license information.
+
+
+using Duende.IdentityServer.Models;
+using System.Collections.Generic;
+using Duende.IdentityServer;
+
+namespace IdentityServerHost;
+
+public static class Clients
+{
+ public static IEnumerable List =>
+ new []
+ {
+ ///////////////////////////////////////////
+ // CIBA Sample
+ //////////////////////////////////////////
+ new Client
+ {
+ ClientId = "ciba",
+ ClientName = "CIBA Client",
+ ClientSecrets = { new Secret("secret".Sha256()) },
+ AllowedGrantTypes = GrantTypes.Ciba,
+ RequireConsent = true,
+ AllowOfflineAccess = true,
+ AllowedScopes =
+ {
+ IdentityServerConstants.StandardScopes.OpenId,
+ IdentityServerConstants.StandardScopes.Profile,
+ "scope1",
+ "scope1"
+ }
+ },
+ };
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/IdentityServerHost.csproj b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/IdentityServerHost.csproj
new file mode 100644
index 00000000..0a429b12
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/IdentityServerHost.csproj
@@ -0,0 +1,12 @@
+
+
+
+ net8.0
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/AccessDenied.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/AccessDenied.cshtml
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/AccessDenied.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/AccessDenied.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/AccessDenied.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/AccessDenied.cshtml.cs
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/AccessDenied.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/AccessDenied.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/InputModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/InputModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/InputModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/InputModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/LoginOptions.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/LoginOptions.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/LoginOptions.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/LoginOptions.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/ViewModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/ViewModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Login/ViewModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Login/ViewModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/LoggedOut.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/LoggedOut.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/LoggedOut.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/LoggedOut.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/LoggedOut.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/LoggedOut.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/LoggedOut.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/LoggedOut.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/LoggedOutViewModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/LoggedOutViewModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/LoggedOutViewModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/LoggedOutViewModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/LogoutOptions.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/LogoutOptions.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Account/Logout/LogoutOptions.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Account/Logout/LogoutOptions.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/All.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/All.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/All.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/All.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/All.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/All.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/All.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/All.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/Consent.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/Consent.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/Consent.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/Consent.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/Consent.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/Consent.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/Consent.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/Consent.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/ConsentOptions.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/ConsentOptions.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/ConsentOptions.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/ConsentOptions.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/InputModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/InputModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/InputModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/InputModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/ViewModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/ViewModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/ViewModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/ViewModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/_ScopeListItem.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/_ScopeListItem.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Ciba/_ScopeListItem.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Ciba/_ScopeListItem.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/ConsentOptions.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/ConsentOptions.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/ConsentOptions.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/ConsentOptions.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/InputModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/InputModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/InputModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/InputModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/ViewModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/ViewModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/ViewModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/ViewModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/_ScopeListItem.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/_ScopeListItem.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Consent/_ScopeListItem.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Consent/_ScopeListItem.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/DeviceOptions.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/DeviceOptions.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/DeviceOptions.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/DeviceOptions.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/InputModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/InputModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/InputModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/InputModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/Success.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/Success.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/Success.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/Success.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/Success.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/Success.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/Success.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/Success.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/ViewModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/ViewModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/ViewModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/ViewModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/_ScopeListItem.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/_ScopeListItem.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Device/_ScopeListItem.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Device/_ScopeListItem.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Diagnostics/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Diagnostics/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Diagnostics/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Diagnostics/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Diagnostics/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Diagnostics/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Diagnostics/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Diagnostics/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Diagnostics/ViewModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Diagnostics/ViewModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Diagnostics/ViewModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Diagnostics/ViewModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Extensions.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Extensions.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Extensions.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Extensions.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/ExternalLogin/Callback.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/ExternalLogin/Callback.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/ExternalLogin/Callback.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/ExternalLogin/Callback.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/ExternalLogin/Callback.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/ExternalLogin/Callback.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/ExternalLogin/Callback.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/ExternalLogin/Callback.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/ExternalLogin/Challenge.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/ExternalLogin/Challenge.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/ExternalLogin/Challenge.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/ExternalLogin/Challenge.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/ExternalLogin/Challenge.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/ExternalLogin/Challenge.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/ExternalLogin/Challenge.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/ExternalLogin/Challenge.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Grants/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Grants/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Grants/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Grants/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Grants/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Grants/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Grants/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Grants/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Grants/ViewModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Grants/ViewModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Grants/ViewModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Grants/ViewModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Home/Error/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Home/Error/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Home/Error/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Home/Error/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Home/Error/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Home/Error/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Home/Error/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Home/Error/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Home/Error/ViewModel.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Home/Error/ViewModel.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Home/Error/ViewModel.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Home/Error/ViewModel.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Redirect/Index.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Redirect/Index.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Redirect/Index.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Redirect/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Redirect/Index.cshtml.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Redirect/Index.cshtml.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Redirect/Index.cshtml.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Redirect/Index.cshtml.cs
diff --git a/IdentityServer/v7/UserInteraction/ProfileService/IdentityServer/Pages/SecurityHeadersAttribute.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/SecurityHeadersAttribute.cs
similarity index 80%
rename from IdentityServer/v7/UserInteraction/ProfileService/IdentityServer/Pages/SecurityHeadersAttribute.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/SecurityHeadersAttribute.cs
index 09081724..36f9dbd7 100644
--- a/IdentityServer/v7/UserInteraction/ProfileService/IdentityServer/Pages/SecurityHeadersAttribute.cs
+++ b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/SecurityHeadersAttribute.cs
@@ -2,6 +2,7 @@
// See LICENSE in the project root for license information.
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.RazorPages;
@@ -17,13 +18,13 @@ public override void OnResultExecuting(ResultExecutingContext context)
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Type-Options"))
{
- context.HttpContext.Response.Headers.Add("X-Content-Type-Options", "nosniff");
+ context.HttpContext.Response.Headers.Append("X-Content-Type-Options", "nosniff");
}
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
if (!context.HttpContext.Response.Headers.ContainsKey("X-Frame-Options"))
{
- context.HttpContext.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
+ context.HttpContext.Response.Headers.Append("X-Frame-Options", "SAMEORIGIN");
}
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
@@ -36,19 +37,19 @@ public override void OnResultExecuting(ResultExecutingContext context)
// once for standards compliant browsers
if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security-Policy"))
{
- context.HttpContext.Response.Headers.Add("Content-Security-Policy", csp);
+ context.HttpContext.Response.Headers.Append("Content-Security-Policy", csp);
}
// and once again for IE
if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Security-Policy"))
{
- context.HttpContext.Response.Headers.Add("X-Content-Security-Policy", csp);
+ context.HttpContext.Response.Headers.Append("X-Content-Security-Policy", csp);
}
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
var referrer_policy = "no-referrer";
if (!context.HttpContext.Response.Headers.ContainsKey("Referrer-Policy"))
{
- context.HttpContext.Response.Headers.Add("Referrer-Policy", referrer_policy);
+ context.HttpContext.Response.Headers.Append("Referrer-Policy", referrer_policy);
}
}
}
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Shared/_Layout.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Shared/_Layout.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Shared/_Layout.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Shared/_Layout.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Shared/_Nav.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Shared/_Nav.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Shared/_Nav.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Shared/_Nav.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Shared/_ValidationSummary.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Shared/_ValidationSummary.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/Shared/_ValidationSummary.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/Shared/_ValidationSummary.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/TestUsers.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/TestUsers.cs
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/TestUsers.cs
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/TestUsers.cs
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/_ViewImports.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/_ViewImports.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/_ViewImports.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/_ViewImports.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/_ViewStart.cshtml b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/_ViewStart.cshtml
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Pages/_ViewStart.cshtml
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Pages/_ViewStart.cshtml
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Program.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Program.cs
new file mode 100644
index 00000000..ce1083c7
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Program.cs
@@ -0,0 +1,49 @@
+// Copyright (c) Duende Software. All rights reserved.
+// See LICENSE in the project root for license information.
+
+
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Hosting;
+using Serilog;
+using Serilog.Sinks.SystemConsole.Themes;
+using System;
+
+namespace IdentityServerHost;
+
+public class Program
+{
+ public static int Main(string[] args)
+ {
+ Console.Title = "IdentityServer";
+
+ Log.Logger = new LoggerConfiguration()
+ .MinimumLevel.Information()
+ .Enrich.FromLogContext()
+ .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Code)
+ .CreateLogger();
+
+ try
+ {
+ Log.Information("Starting host...");
+ CreateHostBuilder(args).Build().Run();
+ return 0;
+ }
+ catch (Exception ex)
+ {
+ Log.Fatal(ex, "Host terminated unexpectedly.");
+ return 1;
+ }
+ finally
+ {
+ Log.CloseAndFlush();
+ }
+ }
+
+ public static IHostBuilder CreateHostBuilder(string[] args) =>
+ Host.CreateDefaultBuilder(args)
+ .UseSerilog()
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseStartup();
+ });
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Properties/launchSettings.json b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Properties/launchSettings.json
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/Properties/launchSettings.json
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Properties/launchSettings.json
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Resources.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Resources.cs
new file mode 100644
index 00000000..b042f0ef
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Resources.cs
@@ -0,0 +1,25 @@
+// Copyright (c) Duende Software. All rights reserved.
+// See LICENSE in the project root for license information.
+
+
+using Duende.IdentityServer.Models;
+using System.Collections.Generic;
+
+namespace IdentityServerHost;
+
+public static class Resources
+{
+ public static IEnumerable Identity =>
+ new IdentityResource[]
+ {
+ new IdentityResources.OpenId(),
+ new IdentityResources.Profile(),
+ };
+
+ public static IEnumerable ApiScopes =>
+ new ApiScope[]
+ {
+ new ApiScope("scope1"),
+ new ApiScope("scope2"),
+ };
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Startup.cs b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Startup.cs
new file mode 100644
index 00000000..a6a2e7ba
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/Startup.cs
@@ -0,0 +1,62 @@
+// Copyright (c) Duende Software. All rights reserved.
+// See LICENSE in the project root for license information.
+
+
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+
+namespace IdentityServerHost;
+
+public class Startup
+{
+ public IWebHostEnvironment Environment { get; }
+ public IConfiguration Configuration { get; }
+
+ public Startup(IWebHostEnvironment environment, IConfiguration configuration)
+ {
+ Environment = environment;
+ Configuration = configuration;
+ }
+
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddRazorPages();
+
+ var builder = services.AddIdentityServer(options =>
+ {
+ options.Events.RaiseErrorEvents = true;
+ options.Events.RaiseInformationEvents = true;
+ options.Events.RaiseFailureEvents = true;
+ options.Events.RaiseSuccessEvents = true;
+
+ // see https://docs.duendesoftware.com/identityserver/v5/basics/resources
+ options.EmitStaticAudienceClaim = true;
+ })
+ .AddTestUsers(TestUsers.Users);
+
+ builder.AddInMemoryIdentityResources(Resources.Identity);
+ builder.AddInMemoryApiScopes(Resources.ApiScopes);
+ builder.AddInMemoryClients(Clients.List);
+ }
+
+ public void Configure(IApplicationBuilder app)
+ {
+ if (Environment.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+
+ app.UseStaticFiles();
+
+ app.UseRouting();
+ app.UseIdentityServer();
+ app.UseAuthorization();
+ app.UseEndpoints(endpoints =>
+ {
+ endpoints.MapRazorPages();
+ });
+ }
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/css/site.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/css/site.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/css/site.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/css/site.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/css/site.min.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/css/site.min.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/css/site.min.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/css/site.min.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/css/site.scss b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/css/site.scss
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/css/site.scss
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/css/site.scss
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/duende-logo.svg b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/duende-logo.svg
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/duende-logo.svg
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/duende-logo.svg
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/favicon.ico b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/favicon.ico
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/favicon.ico
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/favicon.ico
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/js/signin-redirect.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/js/signin-redirect.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/js/signin-redirect.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/js/signin-redirect.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/js/signout-redirect.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/js/signout-redirect.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/js/signout-redirect.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/js/signout-redirect.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/LICENSE b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/LICENSE
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/LICENSE
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/LICENSE
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/README.md b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/README.md
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/README.md
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/README.md
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/LICENSE b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/LICENSE
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/LICENSE
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/LICENSE
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.eot b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.eot
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.eot
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.eot
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.svg b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.svg
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.svg
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.svg
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.ttf b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.ttf
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.ttf
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff2 b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff2
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff2
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff2
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.less b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.less
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.less
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.less
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.min.css b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.min.css
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.min.css
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.min.css
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/LICENSE.txt b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/LICENSE.txt
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/LICENSE.txt
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/LICENSE.txt
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/README.md b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/README.md
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/README.md
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/README.md
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.min.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.min.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.min.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.min.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.min.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.min.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.min.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.min.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.slim.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.slim.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.slim.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.slim.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.slim.min.js b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.slim.min.js
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.slim.min.js
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.slim.min.js
diff --git a/IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.slim.min.map b/IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.slim.min.map
old mode 100755
new mode 100644
similarity index 100%
rename from IdentityServer/v7/UserInteraction/Ciba/IdentityServer/wwwroot/lib/jquery/dist/jquery.slim.min.map
rename to IdentityServer/v7/UserInteraction/Ciba/IdentityServerHost/wwwroot/lib/jquery/dist/jquery.slim.min.map
diff --git a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Constants.cs b/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Constants.cs
deleted file mode 100755
index 5a07a505..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Constants.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Clients
-{
- public class Constants
- {
- public const string Authority = "https://localhost:5001";
- public const string SampleApi = "https://localhost:5005/";
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/IdentityController.cs b/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/IdentityController.cs
deleted file mode 100755
index 38812ac3..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/IdentityController.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.Extensions.Logging;
-using System.Linq;
-
-namespace SampleApi.Controllers
-{
- [Route("identity")]
- public class IdentityController : ControllerBase
- {
- private readonly ILogger _logger;
-
- public IdentityController(ILogger logger)
- {
- _logger = logger;
- }
-
- // this action simply echoes the claims back to the client
- [HttpGet]
- public ActionResult Get()
- {
- var claims = User.Claims.Select(c => new { c.Type, c.Value });
- _logger.LogInformation("claims: {claims}", claims);
-
- return new JsonResult(claims);
- }
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Program.cs b/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Program.cs
deleted file mode 100755
index 44fe9c6a..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Program.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-using Microsoft.AspNetCore;
-using Microsoft.AspNetCore.Hosting;
-using Serilog;
-using Serilog.Events;
-using Serilog.Sinks.SystemConsole.Themes;
-
-namespace SampleApi
-{
- public class Program
- {
- public static void Main(string[] args)
- {
- Console.Title = "Sample API";
-
- BuildWebHost(args).Run();
- }
-
- public static IWebHost BuildWebHost(string[] args)
- {
- Log.Logger = new LoggerConfiguration()
- .MinimumLevel.Verbose()
- .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
- .MinimumLevel.Override("System", LogEventLevel.Warning)
- .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();
-
- return WebHost.CreateDefaultBuilder(args)
- .UseStartup()
- .UseSerilog()
- .Build();
- }
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Startup.cs b/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Startup.cs
deleted file mode 100755
index 7c38fff8..00000000
--- a/IdentityServer/v7/UserInteraction/Ciba/SimpleApi/Startup.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System.IdentityModel.Tokens.Jwt;
-using Clients;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.Extensions.DependencyInjection;
-
-
-namespace SampleApi
-{
- public class Startup
- {
- public Startup()
- {
- JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
- }
-
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddControllers();
-
- // this API will accept any access token from the authority
- services.AddAuthentication("token")
- .AddJwtBearer("token", options =>
- {
- options.Authority = Constants.Authority;
- options.TokenValidationParameters.ValidateAudience = false;
-
- options.TokenValidationParameters.ValidTypes = new[] { "at+jwt" };
- });
- }
-
- public void Configure(IApplicationBuilder app)
- {
- app.UseRouting();
- app.UseAuthentication();
- app.UseAuthorization();
-
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapControllers().RequireAuthorization();
- });
- }
- }
-}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/DynamicProviders/.vscode/launch.json b/IdentityServer/v7/UserInteraction/DynamicProviders/.vscode/launch.json
new file mode 100644
index 00000000..a20c2e5e
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/DynamicProviders/.vscode/launch.json
@@ -0,0 +1,45 @@
+{
+ "version": "0.2.0",
+ "compounds": [
+ {
+ "name": "Run All",
+ "configurations": ["Client","IdentityServerHost"],
+ "presentation": {
+ "group": "10-compounds",
+ "order": 1
+ }
+ }
+ ],
+ "configurations": [
+ {
+ "name": "IdentityServerHost",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build-identityserver",
+ "program": "${workspaceFolder}/IdentityServerHost/bin/Debug/net8.0/IdentityServerHost.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}/IdentityServerHost",
+ "env": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "console": "externalTerminal"
+ },
+ {
+ "name": "Client",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build-client",
+ "program": "${workspaceFolder}/Client/bin/Debug/net8.0/Client.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}/Client",
+ "serverReadyAction": {
+ "action": "openExternally",
+ "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
+ },
+ "env": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "console": "externalTerminal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/DynamicProviders/.vscode/tasks.json b/IdentityServer/v7/UserInteraction/DynamicProviders/.vscode/tasks.json
new file mode 100644
index 00000000..780ae2a2
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/DynamicProviders/.vscode/tasks.json
@@ -0,0 +1,29 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "build-identityserver",
+ "type": "process",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "${workspaceFolder}/IdentityServerHost/IdentityServerHost.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "build-client",
+ "type": "process",
+ "command": "dotnet",
+ "args": [
+ "build",
+ "${workspaceFolder}/Client/Client.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/WsFederationDynamicProviders/MvcClient/MvcClient.csproj b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Client.csproj
old mode 100755
new mode 100644
similarity index 77%
rename from IdentityServer/v7/UserInteraction/WsFederationDynamicProviders/MvcClient/MvcClient.csproj
rename to IdentityServer/v7/UserInteraction/DynamicProviders/Client/Client.csproj
index 487581a5..58c24a47
--- a/IdentityServer/v7/UserInteraction/WsFederationDynamicProviders/MvcClient/MvcClient.csproj
+++ b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Client.csproj
@@ -1,12 +1,12 @@
- net6.0
+ net8.0
-
+
diff --git a/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Controllers/HomeController.cs b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Controllers/HomeController.cs
new file mode 100644
index 00000000..072519b2
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Controllers/HomeController.cs
@@ -0,0 +1,14 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Client.Controllers;
+
+public class HomeController : Controller
+{
+ [AllowAnonymous]
+ public IActionResult Index() => View();
+
+ public IActionResult Secure() => View();
+
+ public IActionResult Logout() => SignOut("oidc");
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Program.cs b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Program.cs
new file mode 100644
index 00000000..5f6652af
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Program.cs
@@ -0,0 +1,22 @@
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Hosting;
+using System;
+
+namespace Client;
+
+public class Program
+{
+ public static void Main(string[] args)
+ {
+ Console.Title = "Client";
+
+ CreateHostBuilder(args).Build().Run();
+ }
+
+ public static IHostBuilder CreateHostBuilder(string[] args) =>
+ Host.CreateDefaultBuilder(args)
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseStartup();
+ });
+}
diff --git a/IdentityServer/v7/UserInteraction/DynamicProviders/MvcClient/Properties/launchSettings.json b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Properties/launchSettings.json
similarity index 100%
rename from IdentityServer/v7/UserInteraction/DynamicProviders/MvcClient/Properties/launchSettings.json
rename to IdentityServer/v7/UserInteraction/DynamicProviders/Client/Properties/launchSettings.json
diff --git a/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Startup.cs b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Startup.cs
new file mode 100644
index 00000000..77e6ffcc
--- /dev/null
+++ b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Startup.cs
@@ -0,0 +1,77 @@
+using Microsoft.AspNetCore.Authentication;
+using Microsoft.AspNetCore.Authentication.Cookies;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.IdentityModel.Tokens;
+using System.IdentityModel.Tokens.Jwt;
+using System.Net.Http;
+using IdentityModel.Client;
+using System.Threading.Tasks;
+
+namespace Client;
+
+public class Startup
+{
+ public void ConfigureServices(IServiceCollection services)
+ {
+ JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
+
+ services.AddControllersWithViews();
+
+ services.AddAuthentication(options =>
+ {
+ options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
+ options.DefaultChallengeScheme = "oidc";
+ })
+ .AddCookie(options =>
+ {
+ options.Cookie.Name = "mvcbasic";
+ })
+ .AddOpenIdConnect("oidc", options =>
+ {
+ options.Authority = "https://localhost:5001";
+ options.RequireHttpsMetadata = false;
+
+ options.ClientId = "interactive";
+ options.ClientSecret = "49C1A7E1-0C79-4A89-A3D6-A37998FB86B0";
+
+ // code flow + PKCE (PKCE is turned on by default)
+ options.ResponseType = "code";
+ options.UsePkce = true;
+
+ options.Scope.Clear();
+ options.Scope.Add("openid");
+ options.Scope.Add("profile");
+
+ // not mapped by default
+ options.ClaimActions.MapJsonKey("website", "website");
+
+ // keeps id_token smaller
+ options.GetClaimsFromUserInfoEndpoint = true;
+ options.SaveTokens = true;
+
+ options.TokenValidationParameters = new TokenValidationParameters
+ {
+ NameClaimType = "name",
+ RoleClaimType = "role"
+ };
+ });
+ }
+
+ public void Configure(IApplicationBuilder app)
+ {
+ app.UseDeveloperExceptionPage();
+ app.UseStaticFiles();
+
+ app.UseRouting();
+
+ app.UseAuthentication();
+ app.UseAuthorization();
+
+ app.UseEndpoints(endpoints =>
+ {
+ endpoints.MapDefaultControllerRoute()
+ .RequireAuthorization();
+ });
+ }
+}
\ No newline at end of file
diff --git a/IdentityServer/v7/UserInteraction/DynamicProviders/MvcClient/Views/Home/Index.cshtml b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Views/Home/Index.cshtml
similarity index 100%
rename from IdentityServer/v7/UserInteraction/DynamicProviders/MvcClient/Views/Home/Index.cshtml
rename to IdentityServer/v7/UserInteraction/DynamicProviders/Client/Views/Home/Index.cshtml
diff --git a/IdentityServer/v7/UserInteraction/DynamicProviders/MvcClient/Views/Home/Secure.cshtml b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Views/Home/Secure.cshtml
similarity index 100%
rename from IdentityServer/v7/UserInteraction/DynamicProviders/MvcClient/Views/Home/Secure.cshtml
rename to IdentityServer/v7/UserInteraction/DynamicProviders/Client/Views/Home/Secure.cshtml
diff --git a/IdentityServer/v7/UserInteraction/DynamicProviders/MvcClient/Views/Shared/Error.cshtml b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Views/Shared/Error.cshtml
similarity index 100%
rename from IdentityServer/v7/UserInteraction/DynamicProviders/MvcClient/Views/Shared/Error.cshtml
rename to IdentityServer/v7/UserInteraction/DynamicProviders/Client/Views/Shared/Error.cshtml
diff --git a/IdentityServer/v7/UserInteraction/SpaLoginUi/MvcClient/Views/Shared/_Layout.cshtml b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Views/Shared/_Layout.cshtml
old mode 100755
new mode 100644
similarity index 95%
rename from IdentityServer/v7/UserInteraction/SpaLoginUi/MvcClient/Views/Shared/_Layout.cshtml
rename to IdentityServer/v7/UserInteraction/DynamicProviders/Client/Views/Shared/_Layout.cshtml
index 173783f6..59c2ee93
--- a/IdentityServer/v7/UserInteraction/SpaLoginUi/MvcClient/Views/Shared/_Layout.cshtml
+++ b/IdentityServer/v7/UserInteraction/DynamicProviders/Client/Views/Shared/_Layout.cshtml
@@ -3,7 +3,7 @@
- @ViewData["Title"] - Mvc Client
+ @ViewData["Title"] - Dynamic Providers
@@ -11,7 +11,7 @@