using System.Text; using AMessanger.Application.Settings; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; namespace AMessanger.Application; public static class ApplicationExtensions { public static IServiceCollection AddAuth(this IServiceCollection services, IConfiguration configuration) { var jwtConf = configuration.GetSection(JwtSettings.SECTION_NAME); services.Configure(jwtConf); var settings = jwtConf.Get()!; services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = settings.Issuer, ValidAudience = settings.Audience, IssuerSigningKey = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(settings.Key) ) }; }); return services.AddAuthorization(); } }