75 lines
2.3 KiB
C#
75 lines
2.3 KiB
C#
using System.Text;
|
|
using API.Configuration;
|
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
|
using Microsoft.AspNetCore.HttpOverrides;
|
|
using Microsoft.IdentityModel.Tokens;
|
|
using RecNet.Application;
|
|
using RecNet.Infrastructure;
|
|
using RecNet.Infrastructure.Services.Tokens;
|
|
using RecNet.ServiceDefaults;
|
|
|
|
namespace API;
|
|
|
|
public class Program
|
|
{
|
|
public static void Main(string[] args)
|
|
{
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
var recNetOptions = builder.Configuration.GetSection("RecNet").Get<RecNetOptions>()
|
|
?? new RecNetOptions();
|
|
|
|
var jwtOptions = builder.Configuration.GetSection("Jwt").Get<JwtOptions>()
|
|
?? new JwtOptions();
|
|
|
|
builder.AddServiceDefaults();
|
|
|
|
builder.Services.Configure<ForwardedHeadersOptions>(options =>
|
|
{
|
|
options.ForwardedHeaders =
|
|
ForwardedHeaders.XForwardedFor |
|
|
ForwardedHeaders.XForwardedHost |
|
|
ForwardedHeaders.XForwardedProto;
|
|
options.KnownIPNetworks.Clear();
|
|
options.KnownProxies.Clear();
|
|
});
|
|
|
|
builder.Services.AddApplication();
|
|
builder.AddInfrastructure();
|
|
|
|
builder.Services
|
|
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
|
.AddJwtBearer(options =>
|
|
{
|
|
options.TokenValidationParameters = new TokenValidationParameters
|
|
{
|
|
ValidateIssuerSigningKey = true,
|
|
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtOptions.Secret)),
|
|
ValidateIssuer = true,
|
|
ValidIssuer = jwtOptions.Issuer,
|
|
ValidateAudience = true,
|
|
ValidAudience = jwtOptions.Audience,
|
|
ValidateLifetime = true,
|
|
ClockSkew = TimeSpan.FromMinutes(1)
|
|
};
|
|
});
|
|
|
|
builder.Services.AddAuthorization();
|
|
|
|
builder.Services.AddControllers();
|
|
|
|
var app = builder.Build();
|
|
|
|
if (recNetOptions.UseForwardedHeaders)
|
|
app.UseForwardedHeaders();
|
|
|
|
app.UseAuthentication();
|
|
app.UseAuthorization();
|
|
|
|
app.MapControllers();
|
|
app.MapDefaultEndpoints();
|
|
|
|
app.Run();
|
|
}
|
|
}
|