67 lines
2.2 KiB
C#
67 lines
2.2 KiB
C#
using OBSBoardsApi.Model;
|
|
using OBSBoardsApi.Swagger;
|
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.IdentityModel.Tokens;
|
|
using Microsoft.OpenApi.Models;
|
|
using System.IdentityModel.Tokens.Jwt;
|
|
using System.Security.Claims;
|
|
using System.Text;
|
|
using System.Text.Json.Serialization;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
builder.Services.AddAuthentication(options =>
|
|
{
|
|
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
|
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
|
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
|
|
}).AddJwtBearer(o =>
|
|
{
|
|
o.TokenValidationParameters = new TokenValidationParameters
|
|
{
|
|
ValidIssuer = builder.Configuration["Jwt:Issuer"],
|
|
ValidAudience = builder.Configuration["Jwt:Audience"],
|
|
IssuerSigningKey = new SymmetricSecurityKey
|
|
(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])),
|
|
ValidateIssuer = true,
|
|
ValidateAudience = true,
|
|
ValidateLifetime = true,
|
|
ValidateIssuerSigningKey = true,
|
|
ClockSkew = TimeSpan.FromSeconds(5)
|
|
};
|
|
});
|
|
builder.Services.AddAuthorization();
|
|
|
|
builder.Services.AddControllers().AddJsonOptions(options =>
|
|
{
|
|
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
|
|
});
|
|
|
|
builder.Services.AddControllers();
|
|
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
|
builder.Services.AddEndpointsApiExplorer();
|
|
builder.Services.AddSwaggerGen(c =>
|
|
{
|
|
// c.SwaggerDoc("v1", new OpenApiInfo { Version="v1", Title="FabitArchiwum", Description="asdfasdf"});
|
|
c.EnableAnnotations();
|
|
c.AddSecurityDefinition("Bearer", OpenApiSecuritySwagger.SecurityScheme());
|
|
c.AddSecurityRequirement(OpenApiSecuritySwagger.SecurityRequirement());
|
|
c.OperationFilter<OperationFilterSwagger>();
|
|
c.ParameterFilter<ParameterFilterSwagger>();
|
|
});
|
|
|
|
var app = builder.Build();
|
|
app.UseHttpsRedirection();
|
|
app.UseSwagger();
|
|
app.UseSwaggerUI(options =>
|
|
{
|
|
options.SwaggerEndpoint("/swagger/v1/swagger.json", "OBSBoardsApi v1.0.0");
|
|
});
|
|
|
|
|
|
app.UseAuthentication();
|
|
app.UseAuthorization();
|
|
app.UseHttpsRedirection();
|
|
app.MapControllers();
|
|
|
|
app.Run(); |