Quantcast
Channel: ASP.NET Core
Viewing all articles
Browse latest Browse all 9386

asp core 3.1 identity login dowesn't work and shows samesite warning

$
0
0
<div>I just finished my asp .net core 3.1 project. and i was trying to deploy it onIIS. So first i scaffolded Asp Identity and it createdidentityHostingStartup and other files. And published the project as self-Contained forwin-x64  as  I generated self signed certificate using openssl for Identity using this process </div> <div> https://benjii.me/2017/06/creating-self-signed-certificate-identity-server-azure/ and put it inside publish folder.also i have used No managed code for the app pool when i tested it, the login it worked on some machines on chrome but for those it didn't work on,it still worked on Microsoft edge browser. when i inspected the login, it shows a warning "a cookie associated with the resource was set with samesite==none" and the warning disappears instantly.But the request was sent with a cookie with value"samesite= strict" and not secure. So i modified startup.cs as shown and set samesite property to none but it didn't work. </div> <div> </div> <div>Here is the code for **startup.cs** </div> <div>
       public void ConfigureServices(IServiceCollection services)        {            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 class IdentityHostingStartup : IHostingStartup    {        public void Configure(IWebHostBuilder builder)        {            builder.ConfigureServices((context, services) => {            });        }    }

</div> <div>Thank you in Advance.</div>

Viewing all articles
Browse latest Browse all 9386

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>