public static IMvcCoreBuilder AddIdentityApi <TUser, TRole, TTenant, TApplication, TKey>( this IMvcCoreBuilder mvcBuilder, Action <IdentityApiOptions> configureApi = null) where TUser : IdentityUserExtended <TKey> where TRole : IdentityRoleExtended <TKey> where TTenant : IdentityTenant <TKey> where TApplication : IdentityApplication <TKey> where TKey : IEquatable <TKey> { if (configureApi != null) { mvcBuilder.Services.Configure(configureApi); } mvcBuilder.Services.AddScoped <ISignInHandler, CookiesSignInHandler <TTenant, TApplication, TKey> >(); mvcBuilder.AddActiveRoute <TenantController <TTenant, TKey>, IdentityApiFeature, IdentityApiOptions>(); mvcBuilder.AddActiveRoute <ApplicationController <TApplication, TKey>, IdentityApiFeature, IdentityApiOptions>(); mvcBuilder.AddActiveRoute <UserController <TUser, TTenant, TKey>, IdentityApiFeature, IdentityApiOptions>(); mvcBuilder.AddActiveRoute <RoleController <TRole, TKey>, IdentityApiFeature, IdentityApiOptions>(); if (mvcBuilder.Services.BuildServiceProvider().GetRequiredService <ITokenInfoProvider>().Enabled) { mvcBuilder.AddActiveRoute <TokenController <TUser, TTenant, TApplication, TKey>, IdentityApiFeature, IdentityApiOptions>(); } return(mvcBuilder); }
private static void AddMetricsApi(this IMvcCoreBuilder mvcBuilder, Action <MetricsOptions> configureAction = null) { if (configureAction != null) { mvcBuilder.Services.Configure(configureAction); } mvcBuilder.AddActiveRoute <MetricsBuilder, MetricsController, MetricsFeature, MetricsOptions>(); }
public static IMvcCoreBuilder AddBackgroundTasksApi(this IMvcCoreBuilder mvcBuilder, Action <BackgroundTaskOptions> configureTasks = null) { mvcBuilder.Services.Configure(configureTasks); mvcBuilder.Services.AddSafeLogging(); mvcBuilder.AddActiveRoute <BackgroundTaskController, BackgroundTasksFeature, BackgroundTaskOptions>(); return(mvcBuilder); }
public static RuntimeBuilder AddRuntimeApi <T>(this IMvcCoreBuilder mvcBuilder, Action <RuntimeOptions> configureAction = null) { if (configureAction != null) { mvcBuilder.Services.Configure(configureAction); } return(mvcBuilder.AddActiveRoute <RuntimeBuilder, RuntimeController <T>, RuntimeFeature, RuntimeOptions>()); }
public static RuntimeBuilder AddRuntimeApi(this IMvcCoreBuilder mvcBuilder, Action <RuntimeOptions> configureAction = null) { if (configureAction != null) { mvcBuilder.Services.Configure(configureAction); } mvcBuilder.AddActiveRoute <RuntimeController, RuntimeComponent, RuntimeOptions>(); return(new RuntimeBuilder(mvcBuilder.Services)); }
private static void AddCachesDebuggerApi(this IMvcCoreBuilder mvcBuilder, Action <CachesDebugOptions> configureAction = null) { if (configureAction != null) { mvcBuilder.Services.Configure(configureAction); } mvcBuilder .AddActiveRoute <OperationsBuilder, CachesDebugController, CachesDebugFeature, CachesDebugOptions>(); }
private static void AddEnvironmentApi(this IMvcCoreBuilder mvcBuilder, Action <EnvironmentDebugOptions> configureAction = null) { if (configureAction != null) { mvcBuilder.Services.Configure(configureAction); } mvcBuilder .AddActiveRoute <OperationsBuilder, EnvironmentDebugController, EnvironmentDebugFeature, EnvironmentDebugOptions>(); }
public static IMvcCoreBuilder AddSchemaApi(this IMvcCoreBuilder mvcBuilder, Action <SchemaOptions> configureAction = null) { if (configureAction != null) { mvcBuilder.Services.Configure(configureAction); } mvcBuilder.Services.AddTypeResolver(); mvcBuilder.AddActiveRoute <SchemaController, SchemaComponent, SchemaOptions>(); return(mvcBuilder); }
private static void AddServicesDebuggerApi(this IMvcCoreBuilder mvcBuilder, Action <ServicesDebugOptions> configureAction = null) { if (configureAction != null) { mvcBuilder.Services.Configure(configureAction); } mvcBuilder.AddJsonOptions(o => { o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); }); mvcBuilder .AddActiveRoute <OperationsBuilder, ServicesDebugController, ServicesDebugFeature, ServicesDebugOptions >(); }
private static void AddOptionsDebuggerApi(this IMvcCoreBuilder mvcBuilder, Action <OptionsDebugOptions> configureAction = null) { if (configureAction != null) { mvcBuilder.Services.Configure(configureAction); } mvcBuilder.AddJsonOptions(o => { o.JsonSerializerOptions.IgnoreNullValues = true; o.JsonSerializerOptions.Converters.Add(new IgnoreConverter()); o.JsonSerializerOptions.Converters.Add(new EnumDictionaryConverter()); o.JsonSerializerOptions.Converters.Add(new IpAddressConverter()); }); mvcBuilder .AddActiveRoute <OperationsBuilder, OptionsDebugController, OptionsDebugFeature, OptionsDebugOptions>(); }
public static IMvcCoreBuilder AddConfigurationApi(this IMvcCoreBuilder mvcBuilder, Action <ConfigurationApiOptions> configureAction = null) { if (configureAction != null) { mvcBuilder.Services.Configure <ConfigurationApiOptions>(o => { configureAction.Invoke(o); }); } mvcBuilder.Services.AddValidOptions(); mvcBuilder.Services.AddSaveOptions(); mvcBuilder.Services.TryAddSingleton <ITypeResolver, ReflectionTypeResolver>(); mvcBuilder.Services.AddSingleton <ConfigurationService>(); mvcBuilder.AddActiveRoute <ConfigurationController, ConfigurationFeature, ConfigurationApiOptions>(); return(mvcBuilder); }
public static IMvcCoreBuilder AddSuperUserTokenController <TKey>(this IMvcCoreBuilder mvcBuilder, Func <IServiceProvider, DateTimeOffset> timestamps, Action <ClaimOptions> configureClaimsAction = null, Action <TokenOptions> configureTokensAction = null, Action <SuperUserOptions> configureSuperUserAction = null) where TKey : IEquatable <TKey> { if (configureClaimsAction != null) { mvcBuilder.Services.Configure(configureClaimsAction); } if (configureTokensAction != null) { mvcBuilder.Services.Configure(configureTokensAction); } if (configureSuperUserAction != null) { mvcBuilder.Services.Configure(configureSuperUserAction); } var claims = new ClaimOptions(); configureClaimsAction?.Invoke(claims); var tokens = new TokenOptions(); configureTokensAction?.Invoke(tokens); var superUser = new SuperUserOptions(); configureSuperUserAction?.Invoke(superUser); var credentials = new { SigningKeyString = tokens.SigningKey, EncryptingKeyString = tokens.EncryptingKey }.QuackLike <ITokenCredentials>(); AuthenticationExtensions.MaybeSetSecurityKeys(credentials); var scheme = superUser.Scheme ?? tokens.Scheme; mvcBuilder.Services.AddAuthentication().AddJwtBearer(scheme, o => { if (tokens.Encrypt) { o.TokenValidationParameters = new TokenValidationParameters { TokenDecryptionKeyResolver = (token, securityToken, kid, parameters) => new[] { credentials.EncryptingKey.Key }, ValidateIssuerSigningKey = false, ValidIssuer = tokens.Issuer, ValidateLifetime = true, ValidateAudience = true, ValidAudience = tokens.Audience, RequireSignedTokens = false, IssuerSigningKey = credentials.SigningKey.Key, TokenDecryptionKey = credentials.EncryptingKey.Key, ClockSkew = TimeSpan.FromSeconds(tokens.ClockSkewSeconds), RoleClaimType = claims.RoleClaim, NameClaimType = claims.UserNameClaim }; } else { o.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, ValidIssuer = tokens.Issuer, ValidateLifetime = true, ValidateAudience = true, ValidAudience = tokens.Audience, RequireSignedTokens = true, IssuerSigningKey = credentials.SigningKey.Key, ClockSkew = TimeSpan.FromSeconds(tokens.ClockSkewSeconds), RoleClaimType = claims.RoleClaim, NameClaimType = claims.UserNameClaim }; } }); mvcBuilder.Services.TryAddSingleton <IIdentityClaimNameProvider, DefaultIdentityClaimNameProvider>(); mvcBuilder.Services.TryAddSingleton <ITokenFabricator <TKey> >(r => new DefaultTokenFabricator <TKey>(() => timestamps(r), r.GetRequiredService <IOptionsSnapshot <TokenOptions> >())); mvcBuilder.AddActiveRoute <SuperUserTokenController <TKey>, SuperUserFeature, SuperUserOptions>(); return(mvcBuilder); }
public static RuntimeBuilder AddRuntimeApi <T>(this IMvcCoreBuilder mvcBuilder, IConfiguration config) { mvcBuilder.Services.Configure <RuntimeOptions>(config, o => { o.BindNonPublicProperties = false; }); return(mvcBuilder.AddActiveRoute <RuntimeBuilder, RuntimeController <T>, RuntimeFeature, RuntimeOptions>()); }