Compare commits
14 Commits
931ecbd4bc
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 8d9e7658d7 | |||
| d340be4e2c | |||
| 4afd7924b7 | |||
| 30e5e6a4dc | |||
| df78f842f3 | |||
| 5138daebea | |||
| bbead3a651 | |||
| 802624e7ea | |||
| b2bccc34f5 | |||
| f060641e97 | |||
| e7aaacc410 | |||
| 75cd096b60 | |||
| e4629b1771 | |||
| b699762c1b |
3
.gitignore
vendored
3
.gitignore
vendored
@ -264,4 +264,5 @@ src/KonSoft.Admin.Blazor.Server.Tiered/Logs/*
|
||||
# Use abp install-libs to restore.
|
||||
**/wwwroot/libs/*
|
||||
|
||||
**/Logs/*
|
||||
**/Logs/*
|
||||
**/logs.txt
|
||||
@ -58,6 +58,8 @@ public class KonSoftAuthServerModule : AbpModule
|
||||
|
||||
context.Services.Configure<ForwardedHeadersOptions>(options =>
|
||||
{
|
||||
options.KnownNetworks.Clear();
|
||||
options.KnownProxies.Clear();
|
||||
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
|
||||
});
|
||||
|
||||
@ -137,18 +139,19 @@ public class KonSoftAuthServerModule : AbpModule
|
||||
var app = context.GetApplicationBuilder();
|
||||
var env = context.GetEnvironment();
|
||||
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
app.UseDeveloperExceptionPage();
|
||||
app.UseForwardedHeaders();
|
||||
}
|
||||
else
|
||||
if (!env.IsDevelopment())
|
||||
{
|
||||
app.UseErrorPage();
|
||||
app.UseForwardedHeaders();
|
||||
app.UseHsts();
|
||||
}
|
||||
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
app.UseDeveloperExceptionPage();
|
||||
app.UseForwardedHeaders();
|
||||
}
|
||||
|
||||
app.UseAbpRequestLocalization();
|
||||
|
||||
app.UseCorrelationId();
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Yarp.ReverseProxy.Configuration;
|
||||
namespace KonSoft.InternalGateway.Extensions
|
||||
{
|
||||
public static class YarpSwaggerUIBuilderExtensions
|
||||
{
|
||||
public static IApplicationBuilder UseSwaggerUIWithYarp(this IApplicationBuilder app)
|
||||
{
|
||||
var serviceProvider = app.ApplicationServices;
|
||||
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI(options =>
|
||||
{
|
||||
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
|
||||
var logger = serviceProvider.GetRequiredService<ILogger<Program>>();
|
||||
var proxyConfigProvider = serviceProvider.GetRequiredService<IProxyConfigProvider>();
|
||||
var yarpConfig = proxyConfigProvider.GetConfig();
|
||||
|
||||
var routedClusters = yarpConfig.Clusters
|
||||
.SelectMany(t => t.Destinations,
|
||||
(clusterId, destination) => new { clusterId.ClusterId, destination.Value });
|
||||
|
||||
var groupedClusters = routedClusters
|
||||
.GroupBy(q => q.Value.Address)
|
||||
.Select(t => t.First())
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var gatewayUrl = configuration["GatewayUrl"];
|
||||
|
||||
options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);
|
||||
options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);
|
||||
foreach (var clusterGroup in groupedClusters)
|
||||
{
|
||||
var routeConfig = yarpConfig.Routes.FirstOrDefault(q =>
|
||||
q.ClusterId == clusterGroup.ClusterId);
|
||||
if (routeConfig == null)
|
||||
{
|
||||
logger.LogWarning($"Swagger UI: Couldn't find route configuration for {clusterGroup.ClusterId}...");
|
||||
continue;
|
||||
}
|
||||
|
||||
// options.SwaggerEndpoint($"{clusterGroup.Value.Address}/swagger/v1/swagger.json", $"{routeConfig.RouteId} API");
|
||||
options.SwaggerEndpoint(new Uri(new Uri(!string.IsNullOrWhiteSpace(gatewayUrl)? gatewayUrl: clusterGroup.Value.Address), $"{routeConfig.RouteId.Split("-")[0]}/swagger/v1/swagger.json").AbsoluteUri, $"{routeConfig.RouteId} API");
|
||||
}
|
||||
});
|
||||
|
||||
return app;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,9 @@
|
||||
using KonSoft.InternalGateway;
|
||||
using KonSoft.InternalGateway.Extensions;
|
||||
using KonSoft.Shared.Hosting.AspNetCore;
|
||||
using Microsoft.AspNetCore.Rewrite;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using Serilog;
|
||||
|
||||
var assemblyName = typeof(Program).Assembly.GetName().Name!;
|
||||
@ -17,11 +21,26 @@ try
|
||||
.AddAppSettingsSecretsJson()
|
||||
.UseAutofac()
|
||||
.UseSerilog();
|
||||
|
||||
builder.Services.AddAbpSwaggerGenWithOidc(builder.Configuration["AuthServer:Authority"]!, setupAction: options =>
|
||||
{
|
||||
options.SwaggerDoc("v1", new OpenApiInfo
|
||||
{
|
||||
Title = "Gateway",
|
||||
Version = "v1"
|
||||
});
|
||||
options.DocInclusionPredicate((docName, description) => true);
|
||||
options.CustomSchemaIds(type => type.FullName);
|
||||
});
|
||||
|
||||
|
||||
builder.Services.AddReverseProxy()
|
||||
.LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
|
||||
builder.Services.AddControllers();
|
||||
await builder.AddApplicationAsync<InternalGatewayModule>();
|
||||
var app = builder.Build();
|
||||
await app.InitializeApplicationAsync();
|
||||
app.UseSwaggerUIWithYarp();
|
||||
app.MapReverseProxy();
|
||||
app.MapGet("/heath", () => "Online");
|
||||
await app.RunAsync();
|
||||
|
||||
@ -4,5 +4,10 @@
|
||||
"name": "KonSoft.InternalGateway",
|
||||
"nodes": "https://config.konsoft.top/",
|
||||
"secret": "DBE31703-14F9-4B01-893D-900B8380CE04"
|
||||
},
|
||||
"AuthServer": {
|
||||
"Authority": "https://devauth.konsoft.top",
|
||||
"RequireHttpsMetadata": true,
|
||||
"SwaggerClientId": "Gateway_Swagger"
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ public class AdminHttpApiHostModule : AbpModule
|
||||
SwaggerConfigurationHelper.ConfigureWithOidc(
|
||||
context,
|
||||
configuration["AuthServer:Authority"]!,
|
||||
["AdministrationService"],
|
||||
["Admin", "Dispatch", "Payment", "Report", "TenantManagement"],
|
||||
discoveryEndpoint: configuration["AuthServer:MetadataAddress"],
|
||||
apiTitle: "Administration Service API"
|
||||
);
|
||||
|
||||
@ -6,18 +6,7 @@
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"applicationUrl": "https://localhost:44354"
|
||||
},
|
||||
"Container (Dockerfile)": {
|
||||
"commandName": "Docker",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_HTTPS_PORTS": "8081",
|
||||
"ASPNETCORE_HTTP_PORTS": "8080"
|
||||
},
|
||||
"publishAllPorts": true,
|
||||
"useSSL": true
|
||||
"applicationUrl": "http://localhost:44354"
|
||||
}
|
||||
},
|
||||
"$schema": "http://json.schemastore.org/launchsettings.json"
|
||||
|
||||
@ -6,8 +6,9 @@
|
||||
"secret": "DBE31703-14F9-4B01-893D-900B8380CE04"
|
||||
},
|
||||
"AuthServer": {
|
||||
"Authority": "https://localhost:44322",
|
||||
"RequireHttpsMetadata": true,
|
||||
"SwaggerClientId": "Admin_Swagger"
|
||||
"Authority": "https://devauth.konsoft.top",
|
||||
"RequireHttpsMetadata": false,
|
||||
"SwaggerClientId": "Dev_Admin_Swagger",
|
||||
"MetadataAddress": "https://devauth.konsoft.top"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user