public static void ConfigureServices(IServiceCollection services, VQJwtDescriptor jwtDescriptor)
 {
     services
     .AddAuthentication(x =>
     {
         x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
         x.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
     })
     .AddJwtBearer(x =>
     {
         x.RequireHttpsMetadata      = false;
         x.SaveToken                 = true;
         x.TokenValidationParameters = new TokenValidationParameters
         {
             ValidateIssuerSigningKey = true,
             IssuerSigningKey         = jwtDescriptor.SecretKey.GetSymmetricSecurityKey(),
             ValidateIssuer           = true,
             ValidIssuer      = jwtDescriptor.Issuer,
             ValidateAudience = true,
             ValidAudience    = jwtDescriptor.Audience,
             ValidateLifetime = true,
             ClockSkew        = TimeSpan.FromSeconds(30),
         };
     });
 }
Example #2
0
        public static string GenerateToken(this List <KeyValuePair <string, string> > dictionaryClaims, VQJwtDescriptor tokenDescriptor, int minutesToExpire = _3_HOURS_IN_MINUTES)
        {
            var utcNow = DateTime.UtcNow;

            var claims = new ClaimsIdentity(dictionaryClaims.Select(x => new Claim(x.Key, x.Value)));

            var tokenHeader             = new JwtSecurityTokenHandler();
            var securityTokenDescriptor = new SecurityTokenDescriptor
            {
                Issuer             = tokenDescriptor.Issuer,
                Audience           = tokenDescriptor.Audience,
                Subject            = claims,
                Expires            = utcNow.AddMinutes(minutesToExpire),
                NotBefore          = utcNow,
                SigningCredentials = tokenDescriptor.SecretKey.GetCredentials()
            };

            var token = tokenHeader.CreateToken(securityTokenDescriptor);

            return(tokenHeader.WriteToken(token));
        }