public static IServiceCollection AddAuth(this IServiceCollection services, IConfiguration configuration)
        {
            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, config =>
            {
                var jwtConfig = configuration.GetSection("JWT").Get <JWTConfigReader>();
                var signInKey = JWTHelper.CreateTokenSignInKey(jwtConfig.TokenSecurityKey);

                config.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidAudience    = jwtConfig.Audience,
                    ValidIssuer      = jwtConfig.Issuer,
                    ValidateAudience = true,
                    ValidateIssuer   = true,
                    IssuerSigningKey = signInKey
                };
            });

            // Register policies and handlers
            services.AddScoped <IAuthorizationHandler, FilesOperationsAuthorizationHandler>();
            services.AddScoped <IAuthorizationHandler, UsersOperationsAuthorizationHandler>();

            services.AddAuthorization();
            return(services);
        }