/// <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);
                    }
                };
            });
        }
Example #2
0
        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);
        }