Asp. net Core 3.1, развернутый в iis, показывает предупреждение Samesite на chrome - PullRequest
0 голосов
/ 06 марта 2020

Я только что закончил свой asp. net core 3.1 проект. и я пытался развернуть его на IIS . Итак, сначала я создал Asp Identity , и он создал identityHostingStartup и другие файлы. И опубликовал проект как самодостаточный для win-x64 , когда я сгенерировал самоподписанный сертификат, используя openssl для идентификации с использованием этого процесса https://benjii.me/2017/06/creating-self-signed-certificate-identity-server-azure/ и поместите его в publi sh folder.also я также использовал Нет управляемого кода для пула приложений, когда я тестировал его, вход в систему он работал на некоторых машинах на chrome, но для тех, кто это не сделал не работает, он все еще работает в браузере Microsoft Edge. когда я проверял логин, он показывает предупреждение "повар ie, связанный с ресурсом, был установлен с samesite == нет" и предупреждение исчезает мгновенно. Но запрос был отправлен с поваром ie со значением "samesite = strict" и не является безопасным. Поэтому я изменил startup.cs и установил его на none, но он не работал.

Вот код для startup.cs

        {
            X509Certificate2 cert = null;
            using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
            {
                certStore.Open(OpenFlags.ReadOnly);
                X509Certificate2Collection certCollection = certStore.Certificates.Find(
                    X509FindType.FindByThumbprint,
                    // Replace below with your cert's thumbprint
                    "418f13d9473b6412e186f8e3a05fbf0370ec865c",
                    false);
                // Get the first cert with the thumbprint
                if (certCollection.Count > 0)
                {
                    cert = certCollection[0];
                    //Log.Logger.Information($"Successfully loaded cert from registry: {cert.Thumbprint}");
                }
            }

            // Fallback to local file for development
            if (cert == null)
            {
                cert = new X509Certificate2(Path.Combine("C:\\inetpub\\wwwroot\\VatAppPublish\\", "localhost.pfx"), "");
               // Log.Logger.Information($"Falling back to cert from file. Successfully loaded: {cert.Thumbprint}");
            }


            services.AddDbContext<vat_dbContext>(options =>
                options.UseMySql(
                    Configuration.GetConnectionString("DefaultConnection")));
            services.AddDbContext<ApplicationDbContext>(options =>
               options.UseMySql(
                   Configuration.GetConnectionString("DefaultConnection")));

            services.AddMvc(option => option.EnableEndpointRouting = false)
                .SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
                .AddNewtonsoftJson(opt => opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore)
                .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>());

            services.AddAuthentication(IISDefaults.AuthenticationScheme);

            services.AddTransient<CompanyBLLCustom>();
            services.AddTransient<CustomerBLLCustom>();
            services.AddTransient<MachinesalesBLLCustom>();
            services.AddTransient<ManualsalesBLLCustom>();
            services.AddTransient<PurchaseBLLCustom>();
            services.AddTransient<SummaryreportsBLLCustom>();
            services.AddTransient<SystemconfigBLLCustom>();
            services.AddTransient<SalesreportBLLCustom>();
            services.AddTransient<PurchasereportBLLCustom>();

            services.AddTransient<CompanyFunctions>();
            services.AddTransient<CustomerFunctions>();
            services.AddTransient<MachinesalesFunctions>();
            services.AddTransient<ManualsalesFunctions>();
            services.AddTransient<PurchaseFunctions>();
            services.AddTransient<SystemconfigFunctions>();
            services.AddTransient<SummaryreportsFunctions>();
            services.AddTransient<SalesreportFunctions>();
            services.AddTransient<PurchasereportFunctions>();

            services.AddTransient<CompanyValidator>();
            services.AddTransient<CustomerValidator>();
            services.AddTransient<MachinesalesValidator>();
            services.AddTransient<ManualsalesValidator>();
            services.AddTransient<PurchaseValidator>();
            services.AddTransient<SummaryreportsValidator>();
            services.AddTransient<SystemconfigValidator>();



            services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
                .AddEntityFrameworkStores<ApplicationDbContext>();

            services.AddIdentityServer()
                .AddApiAuthorization<ApplicationUser, ApplicationDbContext>()
                .AddSigningCredential(cert); ;

            services.Configure<CookiePolicyOptions>(options =>
            {
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });


            services.AddAuthentication()
                .AddIdentityServerJwt();

            services.AddControllersWithViews();
            services.AddRazorPages();

            // In production, the React files will be served from this directory
            services.AddSpaStaticFiles(configuration =>
            {
                configuration.RootPath = "ClientApp/build";
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseAuthentication();
            app.UseIdentityServer();          
            app.UseHttpsRedirection();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseStaticFiles();
            app.UseSpaStaticFiles();

            app.UseRouting();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller}/{action=Index}/{id?}");
                endpoints.MapRazorPages();
            });

            app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "ClientApp";

                if (env.IsDevelopment())
                {
                    spa.UseReactDevelopmentServer(npmScript: "start");
                }
            });

            app.UseCookiePolicy(new CookiePolicyOptions
            {
                MinimumSameSitePolicy = SameSiteMode.None
            });

* appseting. json*

  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Port=3306;User=root;Password='';Database=vat_db;TreatTinyAsBoolean=true"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },

  "IdentityServer": {
    "Clients": {
      "VatApplication": {
        "Profile": "IdentityServerSPA"
      }
    }
    ,
    "Key": {
      "Type": "File",
      "FilePath": "C:\\inetpub\\wwwroot\\VatAppPublish\\localhost.pfx",
      "Password": ""
    }
  },

  "AllowedHosts": "*"
}

IdentityHostingStartup.CS

    {
        public void Configure(IWebHostBuilder builder)
        {
            builder.ConfigureServices((context, services) => {
            });
        }
    }

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...