< Summary

Information
Class: Despesas.Backend.CommonDependenceInject.AutorizationDependenceInject
Assembly: Despesas.Backend
File(s): /src/Despesas.Backend/CommonDependenceInject/AutorizationDependenceInject.cs
Line coverage
88%
Covered lines: 38
Uncovered lines: 5
Coverable lines: 43
Total lines: 61
Line coverage: 88.3%
Branch coverage
50%
Covered branches: 2
Total branches: 4
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddSigningConfigurations(...)50%4472.22%
AddAuthenticationConfigurations(...)100%11100%

File(s)

/src/Despesas.Backend/CommonDependenceInject/AutorizationDependenceInject.cs

#LineLine coverage
 1using Despesas.Application.Authentication;
 2using Despesas.Business.Authentication.Abstractions;
 3using Microsoft.AspNetCore.Authentication.JwtBearer;
 4using Microsoft.AspNetCore.Authorization;
 5using Microsoft.Extensions.Options;
 6using Microsoft.IdentityModel.Tokens;
 7using System.Security.Cryptography.X509Certificates;
 8
 9namespace Despesas.Backend.CommonDependenceInject;
 10
 11public static class AutorizationDependenceInject
 12{
 13    public static void AddSigningConfigurations(this WebApplicationBuilder builder)
 1314    {
 1315        builder.Services.Configure<TokenOptions>(builder.Configuration.GetSection("TokenConfigurations"));
 1316        var options = builder.Services.BuildServiceProvider().GetService<IOptions<TokenOptions>>();
 1317        string certificatePath = Path.Combine(AppContext.BaseDirectory, options.Value.Certificate);
 1318        X509Certificate2 certificate = new X509Certificate2(certificatePath, options.Value.Password, X509KeyStorageFlags
 1319        var signingConfigurations = new SigningConfigurations(certificate, options);
 1320        builder.Services.AddSingleton<SigningConfigurations>(signingConfigurations);
 21
 1322        if (builder.Environment.IsProduction())
 123        {
 124            builder.WebHost.ConfigureKestrel(serverOptions =>
 025            {
 026                serverOptions.ConfigureHttpsDefaults(httpsOptions =>
 027                {
 028                    httpsOptions.ServerCertificate = certificate;
 029                });
 130            });
 131        }
 1332    }
 33
 34    public static void AddAuthenticationConfigurations(this WebApplicationBuilder builder)
 135    {
 136        builder.Services.AddAuthentication(authOptions =>
 137        {
 138            authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
 139            authOptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
 140        })
 141        .AddJwtBearer(bearerOptions =>
 142        {
 143            var options = builder.Services.BuildServiceProvider().GetService<IOptions<TokenOptions>>();
 144
 145            bearerOptions.TokenValidationParameters = new TokenValidationParameters
 146            {
 147                IssuerSigningKey = builder.Services.BuildServiceProvider().GetService<SigningConfigurations>().Key,
 148                ValidAudience = options.Value.Audience,
 149                ValidIssuer = options.Value.Issuer,
 150                ValidateIssuerSigningKey = true,
 151                ValidateLifetime = true,
 152                ClockSkew = TimeSpan.Zero
 153            };
 254        });
 55
 156        builder.Services.AddAuthorization(auth =>
 157        {
 158            auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder().AddAuthenticationSchemes(JwtBearerDefaults.Authent
 259        });
 160    }
 61}