Program.cs
using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.IdentityModel.JsonWebTokens; using Microsoft.IdentityModel.Tokens; using Microsoft.AspNetCore.Authentication.Google; using Microsoft.AspNetCore.Authentication.OAuth; using static System.Net.WebRequestMethods; var builder = WebApplication.CreateBuilder(args); builder.Logging.ClearProviders(); builder.Logging.AddConsole(); builder.Services.AddControllersWithViews(); JsonWebTokenHandler.DefaultInboundClaimTypeMap.Clear(); builder.Services.AddHttpClient("ApiClient", client => { client.BaseAddress = new Uri(builder.Configuration["Api:BaseAddress"]); }); builder.Services.AddAuthentication(options => { options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; }).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => { options.LoginPath = "/Account/Login"; options.AccessDeniedPath = "/Authentication/AccessDenied"; }) .AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options => { options.Authority = builder.Configuration["Authentication:OpenId:Authority"]; options.ClientId = builder.Configuration["Authentication:OpenId:ClientId"]; options.ClientSecret = builder.Configuration["Authentication:OpenId:ClientSecret"]; options.ResponseType = "code"; options.SaveTokens = true; options.RequireHttpsMetadata = bool.Parse(builder.Configuration["Authentication:OpenId:Metadata"]); if (options.RequireHttpsMetadata) { options.MetadataAddress = builder.Configuration["Authentication:OpenId:MetaAddress"]; } options.Scope.Add("openid"); options.CallbackPath = "/login-callback"; options.SignedOutCallbackPath = "/logout-callback"; options.TokenValidationParameters = new TokenValidationParameters { NameClaimType = "preferred_username", RoleClaimType = "roles" }; }) .AddGoogle(GoogleDefaults.AuthenticationScheme, options => { options.ClientId = builder.Configuration["Authentication:Google:ClientId"]; options.ClientSecret = builder.Configuration["Authentication:Google:ClientSecret"]; options.CallbackPath = "/login-callback"; }); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } //app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
Leave a Comment