/// <summary> /// Add JWT Authorization /// </summary> /// <param name="services"></param> /// <param name="configuration"></param> public static void AddJwtAuth(this IServiceCollection services, IConfiguration configuration) { var authConfig = configuration.GetSection("TokenAuthentication"); var tokenValidationParameters = new TokenValidationParameters { // The signing key must match! ValidateIssuerSigningKey = true, IssuerSigningKey = JwtSecurityKey.Create(authConfig["SecretKey"]), // Validate the JWT Issuer (iss) claim ValidateIssuer = true, ValidIssuer = authConfig["Issuer"], // Validate the JWT Audience (aud) claim ValidateAudience = true, ValidAudience = authConfig["Audience"], // Validate the token expiry ValidateLifetime = true, ClockSkew = TimeSpan.Zero }; services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.TokenValidationParameters = tokenValidationParameters; options.Events = new JwtBearerEvents { OnAuthenticationFailed = context => { Console.WriteLine("OnAuthenticationFailed: " + context.Exception.Message); return(Task.CompletedTask); }, OnTokenValidated = context => { return(Task.CompletedTask); } }; }); }
public static string GenerateToken(IConfiguration config, String userId) { var authConfig = config.GetSection("TokenAuthentication"); var token = new JwtTokenBuilder() .AddSecurityKey(JwtSecurityKey.Create(authConfig["SecretKey"])) .AddSubject(authConfig["Subject"]) .AddIssuer(authConfig["Issuer"]) .AddAudience(authConfig["Audience"]) /*.AddClaim("FirstName", user.FirstName) * .AddClaim("LastName", user.LastName) * .AddClaim("Email", user.Email) * .AddClaim("UserName", user.Name)*/ .AddClaim("UserId", userId) .AddExpiry(480) .Build(); return(token.Value); }