public static IServiceCollection AddIdpAuthentication(this IServiceCollection services, IConfiguration config) { var idpConfig = new IdpConfiguration(); config.GetSection(nameof(IdpConfiguration)).Bind(idpConfig); services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme) .AddIdentityServerAuthentication(options => { options.Authority = idpConfig.Authority; options.ApiName = idpConfig.ApiName; }); return(services); }
public static IServiceCollection AddIdpAuthentication(this IServiceCollection services, IConfiguration config) { var idpConfig = new IdpConfiguration(); config.GetSection(nameof(IdpConfiguration)).Bind(idpConfig); services .AddAuthentication(options => { options.DefaultScheme = "Cookies"; options.DefaultChallengeScheme = "oidc"; }) .AddCookie("Cookies", options => { options.AccessDeniedPath = "/"; }) .AddOpenIdConnect("oidc", options => { options.SignInScheme = "Cookies"; options.Authority = idpConfig.Authority; options.ClientId = idpConfig.ClientId; options.ResponseType = "code id_token"; //options.CallbackPath = new PathString(""); options.Scope.Add("openid"); options.Scope.Add("profile"); options.Scope.Add("address"); options.Scope.Add("roles"); options.Scope.Add("ttappwebapi"); options.SaveTokens = true; options.ClientSecret = idpConfig.ClientSecret; options.GetClaimsFromUserInfoEndpoint = true; options.ClaimActions.Remove("amr"); options.ClaimActions.DeleteClaim("sid"); options.ClaimActions.DeleteClaim("idp"); options.ClaimActions.MapUniqueJsonKey("role", "role"); options.TokenValidationParameters = new TokenValidationParameters { NameClaimType = JwtClaimTypes.GivenName, RoleClaimType = JwtClaimTypes.Role }; }); return(services); }
// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { Json.Converter.RegisterJsonConverter <ExpandoObjectConverter>(0); var sConfig = Configuration.Get <StartUpConfiguration>(); sConfig.SetDefaultSettings(); services.AddScoped <StartUpConfiguration>((provider => sConfig)); services.AddMvc(options => { }).AddNewtonsoftJson(options => { options.SerializerSettings.Formatting = Formatting.Indented; options.SerializerSettings.ContractResolver = new DefaultContractResolver(); options.SerializerSettings.Converters.Add(new StringEnumConverter()); //options.SerializerSettings.Converters.Add(new PSObjectJsonConverter()); options.SerializerSettings.Converters.Add(new DecimalJsonConverter()); options.SerializerSettings.Converters.Add(new IpAddressConverter()); options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; }); services.AddResponseCompression(); services.AddSpaStaticFiles(); services.AddSignalR().AddNewtonsoftJsonProtocol(options => { options.PayloadSerializerSettings.ContractResolver = new DefaultContractResolver(); options.PayloadSerializerSettings.Converters.Add(new StringEnumConverter()); options.PayloadSerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; }); services.AddSignalARRR(); services.AddAutoMapper(config => { config.AddCollectionMappers(); }, Assembly.GetExecutingAssembly(), typeof(IdpConfiguration).Assembly); services.AddMiddler(options => options .AddUrlRedirectAction() .AddUrlRewriteAction() .AddScriptingAction() .SetDefaultAccessMode(AccessMode.Ignore) ); services.AddScripter(context => context .AddJavaScriptEngine() .AddTypeScriptEngine() .AddPowerShellCoreEngine() .AddModulePlugins() .AddDefaultScripterModules() //.AddScripterModule<VariablesModule>() //.AddScripterModule<TaskHelperModule>() ); var idpConfig = new IdpConfiguration() { AdminUIPostLogoutUris = new List <string> { IdpUriGenerator.GenerateRedirectUri(sConfig.AdminSettings.ListeningIP, sConfig.AdminSettings.HttpsPort), IdpUriGenerator.GenerateRedirectUri(sConfig.AdminSettings.ListeningIP, 4200) }, AdminUIRedirectUris = new List <string> { IdpUriGenerator.GenerateRedirectUri(sConfig.AdminSettings.ListeningIP, sConfig.AdminSettings.HttpsPort), IdpUriGenerator.GenerateRedirectUri(sConfig.AdminSettings.ListeningIP, 4200) } }; services.AddScoped <IMiddlerAgentsService, MiddlerAgentsService>(); services.AddMiddlerServices(sConfig.DbSettings.Provider, sConfig.DbSettings.ConnectionString); services.AddMiddlerIdentityServer(sConfig.DbSettings.Provider, sConfig.DbSettings.ConnectionString, idpConfig); //services.AddDbContext<APPDbContext>(opt => opt.UseSqlServer("Data Source = (localdb)\\MSSQLLocalDB; Initial Catalog = MiddlerApp")); //services.AddMiddlerServices("sqlserver", "Data Source = (localdb)\\MSSQLLocalDB; Initial Catalog = MiddlerApp"); //services.AddMiddlerServices("postgres", "Host=10.0.0.22;Database=MiddlerApp;Username=postgres;Password=postgres"); //services.AddMiddlerServices("sqlite", "Data Source = file.sqlite3"); //services.AddCoreDbContextSqlServer("Data Source = (localdb)\\MSSQLLocalDB; Initial Catalog = MiddlerApp"); //services.AddMiddlerIdentityServer("sqlserver", "Data Source = (localdb)\\MSSQLLocalDB; Initial Catalog = MiddlerApp", idpConfig); //services.AddMiddlerIdentityServer("postgres", // "Host=10.0.0.22;Database=MiddlerApp;Username=postgres;Password=postgres", idpConfig); //{ // AdminUIPostLogoutUris = new List<string> // { // IdpUriGenerator.GenerateRedirectUri(sConfig.AdminSettings.ListeningIP, sConfig.AdminSettings.HttpsPort), // IdpUriGenerator.GenerateRedirectUri(sConfig.AdminSettings.ListeningIP, 4200) // }, // AdminUIRedirectUris = new List<string> // { // IdpUriGenerator.GenerateRedirectUri(sConfig.AdminSettings.ListeningIP, sConfig.AdminSettings.HttpsPort), // IdpUriGenerator.GenerateRedirectUri(sConfig.AdminSettings.ListeningIP, 4200) // } //}); services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN"); services.Configure <ForwardedHeadersOptions>(options => { //options.ForwardLimit = 4; //options.KnownProxies.Add(IPAddress.Parse("127.0.10.1")); //options.ForwardedForHeaderName = "X-Forwarded-For-My-Custom-Header-Name"; options.ForwardedHeaders = ForwardedHeaders.All; }); services.AddScoped <AuthenticationProviderContextService>(); services.AddHostedService <AuthenticationProviderContextHostedService>(); services.AddNamedTransient <IAuthHandler, WindowsAuthHandler>("Windows"); }