예제 #1
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <DatabaseContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")), ServiceLifetime.Transient);
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.RequireHttpsMetadata      = true;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidIssuer    = JwtTokenConfiguration.Issuer,

                    ValidateAudience = true,
                    ValidAudience    = JwtTokenConfiguration.Audience,
                    ValidateLifetime = true,

                    IssuerSigningKey         = JwtTokenConfiguration.GetSymmetricSecurityKey(),
                    ValidateIssuerSigningKey = true,
                };
            });

            services.AddMvc();
            services.AddCors(o => o.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()));
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info {
                    Title = "Graduate Work API", Version = "v1"
                });
            });
            services.AddSwaggerGen(sg =>
            {
                {
                    sg.AddSecurityDefinition("Bearer",
                                             new ApiKeyScheme()
                    {
                        In          = "header",
                        Description = "Please insert JWT with Bearer into field",
                        Name        = "Authorization",
                        Type        = "apiKey"
                    });
                };
                var basePath = AppContext.BaseDirectory;
                var xmlPath  = Path.Combine(basePath, "GraduateWorkApi.xml");
                sg.IncludeXmlComments(xmlPath);
            });

            RegisterTypes(services);
        }
예제 #2
0
        public JwtSecurityToken GenerateJwtTokenAsync(Guid userId)
        {
            var claims = new List <Claim>
            {
                new Claim(ClaimsIdentity.DefaultNameClaimType, userId.ToString()),
            };

            var identity = new ClaimsIdentity
                               (claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);

            return(new JwtSecurityToken(
                       issuer: JwtTokenConfiguration.Issuer,
                       audience: JwtTokenConfiguration.Audience,
                       notBefore: DateTime.UtcNow,
                       claims: identity.Claims,
                       expires: DateTime.UtcNow.Add(TimeSpan.FromDays(JwtTokenConfiguration.LifeTime)),
                       signingCredentials: new SigningCredentials(JwtTokenConfiguration.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256)));
        }
예제 #3
0
        /// <summary>
        /// Method for add authentication.
        /// </summary>
        /// <param name="services"><see cref="IServiceCollection"/> instance.</param>
        public static void AddAuthentication(IServiceCollection services)
        {
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.RequireHttpsMetadata      = true;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidIssuer    = JwtTokenConfiguration.Issuer,

                    ValidateAudience = true,
                    ValidAudience    = JwtTokenConfiguration.Audience,
                    ValidateLifetime = true,

                    IssuerSigningKey         = JwtTokenConfiguration.GetSymmetricSecurityKey(),
                    ValidateIssuerSigningKey = true,
                };
            });
        }