You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.5 KiB

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<CustomProfileService>();
}
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<TenantManagementContext>(optionsBuilder =>
{
if (!string.IsNullOrEmpty(sqlConnectionString))
{
optionsBuilder.UseMySql(sqlConnectionString, ServerVersion.Parse("8.0.28-mysql"));
}
});
builder.Services.AddTransient<DbContext, TenantManagementContext>();
builder.Services.Configure<SequentialGuidGeneratorOptions>(options =>
{
options.SequentialGuidType = Easy.Enums.SequentialGuidType.SequentialAsString;
});
}
}