using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.Options; namespace Musify.Api.Authentication; public static class AuthenticationExtensions { public static IServiceCollection AddAuthenticationConfiguration( this IServiceCollection services, IConfiguration configuration) { services .AddOptionsWithValidateOnStart() .Bind(configuration.GetRequiredSection(AuthenticationConfiguration.SectionName)) .ValidateDataAnnotations(); services.AddSingleton(serviceProvider => serviceProvider.GetRequiredService>().Value); services.AddMemoryCache(); services.AddHttpClient(); services.AddScoped(); services.ConfigureOptions(); services .AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(); services.AddAuthorization(); return services; } }