using System.Security.Claims; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; namespace Common.Authentication.JwtBearer; public static class JWTAuthenticationExtension { public static void AddJwtBearerAuth(this IServiceCollection services, IConfiguration configuration) { var jwtAuthOptions = configuration.GetRequiredSection(JwtBearerAuthenticationOptions.ConfigrationSection) .Get(); services.AddAuthentication(opt => { opt.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(opt => { opt.Authority = jwtAuthOptions.Authority; opt.Audience = jwtAuthOptions.Audience; opt.TokenValidationParameters = new TokenValidationParameters { NameClaimType = ClaimTypes.Name, ValidateAudience = !string.IsNullOrEmpty(jwtAuthOptions.Audience), ValidateIssuer = true, ValidateIssuerSigningKey = true, ValidateLifetime = true }; }); } }