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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        // 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");
        }