< Summary - Syki

Information
Class: Syki.Back.Auth.Schemes.JwtBearerScheme
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Auth/Schemes/JwtBearerScheme.cs
Tag: 56_26538939494
Line coverage
100%
Covered lines: 42
Uncovered lines: 0
Coverable lines: 42
Total lines: 63
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddJwtBearerScheme(...)100%22100%

File(s)

/home/runner/work/syki/syki/Back/Auth/Schemes/JwtBearerScheme.cs

#LineLine coverage
 1using System.Text;
 2using Syki.Back.Auth.Claims;
 3using Microsoft.IdentityModel.Tokens;
 4using System.IdentityModel.Tokens.Jwt;
 5using Microsoft.AspNetCore.Authentication;
 6using Microsoft.AspNetCore.Authentication.JwtBearer;
 7
 8namespace Syki.Back.Auth.Schemes;
 9
 10public static class JwtBearerScheme
 11{
 12    public const string Name = "Bearer";
 13    public const string Cookie = "X-Syki-BearerCookie";
 14
 15    public static AuthenticationBuilder AddJwtBearerScheme(this AuthenticationBuilder builder, IConfiguration configurat
 16    {
 217        JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
 218        JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
 19
 220        var settings = configuration.Auth;
 21
 222        var tokenValidationParameters = new TokenValidationParameters
 223        {
 224            ValidateIssuer = true,
 225            ValidIssuer = settings.Issuer,
 226
 227            ValidateIssuerSigningKey = true,
 228            IssuerSigningKey = new SymmetricSecurityKey(
 229                Encoding.ASCII.GetBytes(settings.SecurityKey)
 230            ),
 231
 232            ValidAlgorithms = ["HS256"],
 233
 234            ValidateAudience = true,
 235            ValidAudience = settings.Audience,
 236
 237            ValidateLifetime = true,
 238            ClockSkew = TimeSpan.Zero,
 239
 240            RoleClaimType = SykiClaims.UserRole,
 241        };
 42
 243        return builder.AddJwtBearer(Name, options =>
 244        {
 245            options.TokenValidationParameters = tokenValidationParameters;
 246
 247            options.Events = new JwtBearerEvents
 248            {
 249                OnMessageReceived = context =>
 250                {
 38851                    var token = context.Request.Cookies[Cookie];
 38852                    if (token.HasValue())
 253                    {
 36454                        context.Token = token;
 36455                        return Task.CompletedTask;
 256                    }
 257
 2458                    return Task.CompletedTask;
 259                }
 260            };
 461        });
 62    }
 63}