Limpieza, Logging y nuevas rutas
This commit is contained in:
parent
da19375940
commit
565e971496
@ -3,7 +3,9 @@ using Ocelot.Configuration;
|
||||
using Ocelot.Middleware;
|
||||
using Security;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.IO;
|
||||
using System.Security.Claims;
|
||||
using System.Security.Policy;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
@ -21,6 +23,9 @@ namespace ApiGateway
|
||||
//var route2 = ctx.Items.DownstreamRequest(); //Solo el path del request
|
||||
//var route3 = ctx.Items.DownstreamRoute(); //Datos full del request
|
||||
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole().AddEventLog());
|
||||
var logger = loggerFactory.CreateLogger("Auth");
|
||||
|
||||
|
||||
string calledUrl = ctx.Items.DownstreamRoute().UpstreamPathTemplate.OriginalValue;
|
||||
|
||||
@ -35,7 +40,7 @@ namespace ApiGateway
|
||||
|
||||
try
|
||||
{
|
||||
string path = ctx.Request.Path;
|
||||
//string path = ctx.Request.Path;
|
||||
|
||||
string authString = ctx.Request.Headers["Authorization"];
|
||||
|
||||
@ -130,6 +135,7 @@ namespace ApiGateway
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.LogError(71, e.Message);
|
||||
ctx.Items.SetError(new UnauthenticatedError(e.Message));
|
||||
return false;
|
||||
}
|
||||
@ -140,6 +146,12 @@ namespace ApiGateway
|
||||
{
|
||||
if(_encript.IsValid == false) return false;
|
||||
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole().AddEventLog());
|
||||
var logger = loggerFactory.CreateLogger("VerifyToken");
|
||||
|
||||
var sb = new StringBuilder()
|
||||
.AppendLine("Error en: VerifyToken");
|
||||
|
||||
var validationParameters = new TokenValidationParameters()
|
||||
{
|
||||
ValidateIssuer = false,
|
||||
@ -155,16 +167,21 @@ namespace ApiGateway
|
||||
{
|
||||
tokenHandler.ValidateToken(token, validationParameters, out validatedToken);
|
||||
}
|
||||
catch (SecurityTokenException)
|
||||
catch (SecurityTokenException se)
|
||||
{
|
||||
sb.AppendLine("SecurityTokenException");
|
||||
sb.AppendLine(se.Message);
|
||||
logger.LogError(96, sb.ToString());
|
||||
return false;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
|
||||
var logger = loggerFactory.CreateLogger("");
|
||||
|
||||
//something else happened
|
||||
logger.LogInformation(e.ToString());
|
||||
|
||||
sb.AppendLine("Exception");
|
||||
sb.AppendLine(e.Message);
|
||||
logger.LogError(96, sb.ToString());
|
||||
|
||||
return false;
|
||||
//throw;
|
||||
@ -174,7 +191,7 @@ namespace ApiGateway
|
||||
}
|
||||
|
||||
public static string? DesCifrar(string value)
|
||||
{
|
||||
{
|
||||
if (_encript.IsValid == false) return null;
|
||||
try
|
||||
{
|
||||
@ -191,8 +208,16 @@ namespace ApiGateway
|
||||
}
|
||||
return decryptedText;
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception e)
|
||||
{
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole().AddEventLog());
|
||||
var logger = loggerFactory.CreateLogger("Decrypt");
|
||||
|
||||
var sb = new StringBuilder()
|
||||
.AppendLine("Error en: DesCifrar")
|
||||
.AppendLine("Exception")
|
||||
.AppendLine(e.Message);
|
||||
logger.LogError(96, sb.ToString());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -204,8 +229,16 @@ namespace ApiGateway
|
||||
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
|
||||
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception e)
|
||||
{
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole().AddEventLog());
|
||||
var logger = loggerFactory.CreateLogger("Base64Decode");
|
||||
|
||||
var sb = new StringBuilder()
|
||||
.AppendLine("Error en: Base64Decode")
|
||||
.AppendLine("Exception")
|
||||
.AppendLine(e.Message);
|
||||
logger.LogError(96, sb.ToString());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,9 @@
|
||||
using Ocelot.Logging;
|
||||
using Ocelot.Middleware;
|
||||
using Ocelot.Responder;
|
||||
using System.IO;
|
||||
using System.Security.Policy;
|
||||
using System.Text;
|
||||
|
||||
namespace ApiGateway.Middleware
|
||||
{
|
||||
@ -26,14 +29,31 @@ namespace ApiGateway.Middleware
|
||||
public async Task Invoke(HttpContext httpContext)
|
||||
{
|
||||
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole().AddEventLog());
|
||||
var logger = loggerFactory.CreateLogger("ResMiddleware");
|
||||
string date = DateTime.Now.ToString();
|
||||
|
||||
var sb = new StringBuilder()
|
||||
.Append("Ingreso ResMiddleware: ").AppendLine(date);
|
||||
|
||||
await _next.Invoke(httpContext);
|
||||
if (httpContext.Response.HasStarted)
|
||||
{
|
||||
sb.Append("Ingresa al if y return");
|
||||
logger.LogInformation(69, sb.ToString());
|
||||
return;
|
||||
}
|
||||
|
||||
var errors = httpContext.Items.Errors();
|
||||
if (errors.Count > 0)
|
||||
{
|
||||
Logger.LogWarning($"{errors.ToErrorString()} errors found in {MiddlewareName}. Setting error response for request path:{httpContext.Request.Path}, request method: {httpContext.Request.Method}");
|
||||
//Logger.LogWarning($"{errors.ToErrorString()} errors found in {MiddlewareName}. Setting error response for request path:{httpContext.Request.Path}, request method: {httpContext.Request.Method}");
|
||||
|
||||
sb.Append("Hay errores res middleware");
|
||||
sb.Append("Cant errores: " + errors.Count.ToString());
|
||||
sb.Append(errors.ToErrorString());
|
||||
|
||||
logger.LogError(71, sb.ToString());
|
||||
|
||||
var statusCode = _codeMapper.Map(errors);
|
||||
var error = string.Join(",", errors.Select(x => x.Message));
|
||||
@ -43,7 +63,9 @@ namespace ApiGateway.Middleware
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.LogDebug("no pipeline errors, setting and returning completed response");
|
||||
//Logger.LogDebug("no pipeline errors, setting and returning completed response");
|
||||
sb.Append("no pipeline errors, setting and returning completed response");
|
||||
logger.LogInformation(69, sb.ToString());
|
||||
|
||||
var downstreamResponse = httpContext.Items.DownstreamResponse();
|
||||
|
||||
|
@ -6,6 +6,9 @@ using MMLib.SwaggerForOcelot.DependencyInjection;
|
||||
using Ocelot.Provider.Polly;
|
||||
using ApiGateway.Config;
|
||||
using ApiGateway.Middleware;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Security.Policy;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
@ -16,8 +19,8 @@ builder.Configuration.AddOcelotWithSwaggerSupport(options =>
|
||||
});
|
||||
|
||||
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
|
||||
var logger = loggerFactory.CreateLogger("");
|
||||
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole().AddEventLog());
|
||||
var logger = loggerFactory.CreateLogger("Gateway");
|
||||
|
||||
builder.Configuration.SetBasePath(builder.Environment.ContentRootPath)
|
||||
.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true)
|
||||
@ -28,19 +31,37 @@ var pipeConfig = new OcelotPipelineConfiguration
|
||||
|
||||
AuthorizationMiddleware = async (downStreamContext, next) =>
|
||||
{
|
||||
var _bearer_token = downStreamContext.Request.Headers[HeaderNames.Authorization].ToString();
|
||||
//string date = DateTime.Now.ToString();
|
||||
//var _bearer_token = downStreamContext.Request.Headers[HeaderNames.Authorization].ToString();
|
||||
|
||||
//logger.LogInformation("Bearer :");
|
||||
//logger.LogInformation(_bearer_token);
|
||||
string date = DateTime.Now.ToString();
|
||||
var url = downStreamContext.Items.DownstreamRoute().UpstreamPathTemplate.OriginalValue;
|
||||
string path = downStreamContext.Request.Path;
|
||||
|
||||
var sb = new StringBuilder()
|
||||
.Append("Ingreso PipeLine: ").AppendLine(date)
|
||||
.Append("calledUrl: ").AppendLine(url)
|
||||
.Append("path: ").AppendLine(path);
|
||||
logger.LogInformation(69, sb.ToString());
|
||||
|
||||
bool isAuthorized = CustomLogic.Authorize(downStreamContext);
|
||||
if (isAuthorized)
|
||||
{
|
||||
var sb2 = new StringBuilder()
|
||||
.AppendLine("Is authorized: ").Append(isAuthorized)
|
||||
.AppendLine("Date: ").Append(date);
|
||||
logger.LogInformation(69, sb2.ToString());
|
||||
await next.Invoke();
|
||||
}
|
||||
else
|
||||
{
|
||||
var sb2 = new StringBuilder()
|
||||
.Append("Is authorized: ").AppendLine(isAuthorized.ToString())
|
||||
.Append("Date: ").AppendLine(date)
|
||||
.Append("Errors: ")
|
||||
.AppendLine(downStreamContext.Items.Errors().ToString());
|
||||
logger.LogWarning(27, sb2.ToString());
|
||||
//downStreamContext.Items.SetError(new UnauthenticatedError("Nel wey, no estas autorizado"));
|
||||
return;
|
||||
}
|
||||
@ -53,7 +74,11 @@ builder.Services.AddCors(options =>
|
||||
{
|
||||
options.AddPolicy(name: "MyCors", builder =>
|
||||
{
|
||||
builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
|
||||
builder
|
||||
.SetIsOriginAllowed((host) => true)
|
||||
.AllowAnyOrigin()
|
||||
.AllowAnyHeader()
|
||||
.AllowAnyMethod();
|
||||
});
|
||||
});
|
||||
|
||||
@ -104,6 +129,10 @@ else
|
||||
app.UseMiddleware<OcelotResponseMiddleware>();
|
||||
app.UseSwaggerForOcelotUI(options =>
|
||||
{
|
||||
var sb = new StringBuilder()
|
||||
.Append("Inicia ocleot: ");
|
||||
logger.LogInformation(73, sb.ToString());
|
||||
|
||||
options.PathToSwaggerGenerator = "/swagger/docs";
|
||||
options.ReConfigureUpstreamSwaggerJson = AlterUpstream.AlterUpstreamSwaggerJson;
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
{
|
||||
"Name": "MsPing",
|
||||
"Version": "1.0",
|
||||
"Url": "http://localhost:8198/api/swagger/v1/swagger.json"
|
||||
"Url": "http://localhost:8198/swagger/v1/swagger.json"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -308,7 +308,45 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"SwaggerKey": "MsAdminUsuarios",
|
||||
"UpstreamPathTemplate": "/Usuarios/NumeroDocumento",
|
||||
"UpstreamHttpMethod": [ "PATCH" ],
|
||||
|
||||
"DownstreamPathTemplate": "/Usuarios/NumeroDocumento",
|
||||
"DownstreamScheme": "http",
|
||||
"DownstreamHostAndPorts": [
|
||||
{
|
||||
"Host": "localhost",
|
||||
"Port": 8151
|
||||
}
|
||||
],
|
||||
|
||||
"RouteClaimsRequirement": {
|
||||
"permisos": "any"
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
"SwaggerKey": "MsAdminUsuarios",
|
||||
"UpstreamPathTemplate": "/Auth/RenovarToken",
|
||||
"UpstreamHttpMethod": [ "PATCH" ],
|
||||
|
||||
"DownstreamPathTemplate": "/Auth/RenovarToken",
|
||||
"DownstreamScheme": "http",
|
||||
"DownstreamHostAndPorts": [
|
||||
{
|
||||
"Host": "localhost",
|
||||
"Port": 8151
|
||||
}
|
||||
],
|
||||
|
||||
"RouteClaimsRequirement": {
|
||||
"permisos": "any"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"SwaggerKey": "MsAdminUsuarios",
|
||||
|
@ -170,6 +170,25 @@
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"SwaggerKey": "Afiliados",
|
||||
"UpstreamPathTemplate": "/Afiliados/Retirar",
|
||||
"UpstreamHttpMethod": [ "Post" ],
|
||||
|
||||
"DownstreamPathTemplate": "/Afiliados/Retirar",
|
||||
"DownstreamScheme": "http",
|
||||
"DownstreamHostAndPorts": [
|
||||
{
|
||||
"Host": "localhost",
|
||||
"Port": 8145
|
||||
}
|
||||
],
|
||||
"RouteClaimsRequirement": {
|
||||
"permisos": "any"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"SwaggerKey": "Afiliados",
|
||||
"UpstreamPathTemplate": "/Afiliados",
|
||||
@ -207,6 +226,24 @@
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"SwaggerKey": "Afiliados",
|
||||
"UpstreamPathTemplate": "/Afiliados/Contacto",
|
||||
"UpstreamHttpMethod": [ "PATCH" ],
|
||||
|
||||
"DownstreamPathTemplate": "/Afiliados/Contacto",
|
||||
"DownstreamScheme": "http",
|
||||
"DownstreamHostAndPorts": [
|
||||
{
|
||||
"Host": "localhost",
|
||||
"Port": 8145
|
||||
}
|
||||
],
|
||||
"RouteClaimsRequirement": {
|
||||
"permisos": "any"
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"SwaggerKey": "Afiliados",
|
||||
@ -328,7 +365,7 @@
|
||||
"UpstreamPathTemplate": "/Archivos/Afiliado",
|
||||
"UpstreamHttpMethod": [ "GET" ],
|
||||
|
||||
"DownstreamPathTemplate": "/Archivos/ArchivosUsuario",
|
||||
"DownstreamPathTemplate": "/Archivos/GrupoFamiliar",
|
||||
"DownstreamScheme": "http",
|
||||
"DownstreamHostAndPorts": [
|
||||
{
|
||||
|
@ -1422,10 +1422,15 @@
|
||||
"GET"
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"SwaggerKey": "MsContratos",
|
||||
"UpstreamPathTemplate": "/TarifasPorMDT",
|
||||
"DownstreamPathTemplate": "/TarifasPorMDT",
|
||||
"UpstreamPathTemplate": "/TarifasPorCUPMDT/CargueMasivo",
|
||||
"DownstreamPathTemplate": "/TarifasPorCUPMDT/CargueMasivo",
|
||||
"DownstreamScheme": "http",
|
||||
"DownstreamHostAndPorts": [
|
||||
{
|
||||
@ -1437,8 +1442,27 @@
|
||||
"permisos": "any"
|
||||
},
|
||||
"UpstreamHttpMethod": [
|
||||
"PATCH"
|
||||
"POST"
|
||||
]
|
||||
},
|
||||
{
|
||||
"SwaggerKey": "MsContratos",
|
||||
"UpstreamPathTemplate": "/Cups/CargueMasivo",
|
||||
"DownstreamPathTemplate": "/Cups/CargueMasivo",
|
||||
"DownstreamScheme": "http",
|
||||
"DownstreamHostAndPorts": [
|
||||
{
|
||||
"Host": "localhost",
|
||||
"Port": 8149
|
||||
}
|
||||
],
|
||||
"RouteClaimsRequirement": {
|
||||
"permisos": "any"
|
||||
},
|
||||
"UpstreamHttpMethod": [
|
||||
"POST"
|
||||
]
|
||||
}
|
||||
|
||||
]
|
||||
}
|
@ -5,7 +5,7 @@
|
||||
"SwaggerKey": "MsPing",
|
||||
|
||||
"UpstreamPathTemplate": "/Ping",
|
||||
"UpstreamHttpMethod": [ "GET", "POST", "PATCH" ],
|
||||
"UpstreamHttpMethod": [ "GET" ],
|
||||
|
||||
"DownstreamPathTemplate": "/Ping",
|
||||
"DownstreamScheme": "http",
|
||||
@ -16,6 +16,25 @@
|
||||
}
|
||||
],
|
||||
|
||||
"RouteClaimsRequirement": {
|
||||
"permisos": "any"
|
||||
}
|
||||
},
|
||||
{
|
||||
"SwaggerKey": "MsPing",
|
||||
|
||||
"UpstreamPathTemplate": "/log",
|
||||
"UpstreamHttpMethod": [ "GET"],
|
||||
|
||||
"DownstreamPathTemplate": "/Log",
|
||||
"DownstreamScheme": "http",
|
||||
"DownstreamHostAndPorts": [
|
||||
{
|
||||
"Host": "localhost",
|
||||
"Port": 8198
|
||||
}
|
||||
],
|
||||
|
||||
"RouteClaimsRequirement": {
|
||||
"permisos": "any"
|
||||
}
|
||||
|
@ -1,10 +1,9 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"System": "Information",
|
||||
"Microsoft": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
"EventLog": {
|
||||
"LogLevel": {
|
||||
"Default": "Information"
|
||||
}
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
|
File diff suppressed because one or more lines are too long
@ -11,7 +11,9 @@ builder.Services.AddSwaggerGen();
|
||||
builder.Services.AddCors(options => {
|
||||
options.AddPolicy(name: "widthoutCors",
|
||||
builder => {
|
||||
builder.AllowAnyOrigin()
|
||||
builder
|
||||
.SetIsOriginAllowed((host) => true)
|
||||
.AllowAnyOrigin()
|
||||
.AllowAnyMethod()
|
||||
.AllowAnyHeader();
|
||||
});
|
||||
@ -33,7 +35,7 @@ else
|
||||
Environment.SetEnvironmentVariable("Mode", "Prod");
|
||||
}
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
//app.UseHttpsRedirection();
|
||||
|
||||
app.UseAuthorization();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user