using Easy.Options; using Identity.Realization; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; using Microsoft.IdentityModel.Tokens; using TenantManagement.Api.EF; namespace TenantManagement.Api.Realization; public static class CustomExtension { public static void AddCustomIdentityServer(this WebApplicationBuilder builder) { var identityServerBuilder = builder.Services.AddIdentityServer(options => { options.UserInteraction.LoginUrl = "/login"; options.UserInteraction.ConsentUrl = "/consent"; options.UserInteraction.LogoutUrl = "/logout"; options.UserInteraction.ErrorUrl = "/error"; options.Events.RaiseErrorEvents = true; options.Events.RaiseInformationEvents = true; options.Events.RaiseFailureEvents = true; options.Events.RaiseSuccessEvents = true; // see https://docs.duendesoftware.com/identityserver/v5/fundamentals/resources/ options.EmitStaticAudienceClaim = true; }); identityServerBuilder.AddInMemoryIdentityResources(SimpleConfig.IdentityResources); identityServerBuilder.AddInMemoryApiScopes(SimpleConfig.ApiScopes); identityServerBuilder.AddInMemoryClients(SimpleConfig.Clients); identityServerBuilder.AddProfileService(); } public static void AddCustomAuthentication(this WebApplicationBuilder builder) { builder.Services.AddAuthentication("Bearer") .AddJwtBearer("Bearer", options => { options.Authority = ""; options.TokenValidationParameters = new TokenValidationParameters { ValidateAudience = false }; }); } public static void AddCustomDbContext(this WebApplicationBuilder builder) { var sqlConnectionString = builder.Configuration["ConnectionString"]; builder.Services.AddDbContext(optionsBuilder => { if (!string.IsNullOrEmpty(sqlConnectionString)) { optionsBuilder.UseMySql(sqlConnectionString, ServerVersion.Parse("8.0.28-mysql")); } }); builder.Services.AddTransient(); builder.Services.Configure(options => { options.SequentialGuidType = Easy.Enums.SequentialGuidType.SequentialAsString; }); } }