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
67 lines
2.5 KiB
3 years ago
|
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;
|
||
|
});
|
||
|
}
|
||
|
}
|