PIAPS_CW/WebApp/Program.cs

58 lines
1.6 KiB
C#

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using WebApp;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["SecretKey"]));
options.TokenValidationParameters = new()
{
ValidateLifetime = true,
IssuerSigningKey = secretKey,
ValidateIssuer = false,
ValidateAudience = false,
};
options.Events = new JwtBearerEvents()
{
OnMessageReceived = context =>
{
// Ïîëó÷àåì èç êóêèñ JWT òîêåí
context.Token = context.Request.Cookies["21gunsthebest"];
return Task.CompletedTask;
}
};
});
builder.Services.AddAuthorization();
// Ïîäêëþ÷àåìñÿ ê API
APIClient.Connect(builder.Configuration);
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapRazorPages();
app.Run();