// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(); app.UseJwtBearerAuthentication(new JwtBearerOptions { AutomaticAuthenticate = true, AutomaticChallenge = true, TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = AuthOptions.ISSUER, ValidateAudience = true, ValidAudience = AuthOptions.AUDIENCE, ValidateLifetime = true, IssuerSigningKey = AuthOptions.GetSymmetricSecurityKey(), ValidateIssuerSigningKey = true, } }); RouteBuilder routeBuilder = new RouteBuilder(app); routeBuilder.MapGet("api/code/{id:int}", context => { if (context.Authentication.HttpContext.User.Identity.IsAuthenticated) { var res = AppConfiguration[context.GetRouteValue("id").ToString()]; return(context.Response.WriteAsync(res == null ? (context.Response.StatusCode = 400).ToString() : $"{AppConfiguration["Codeprefix"]}{DateTime.Now.Month}{DateTime.Now.Year}-{res}")); } return(context.Response.WriteAsync((context.Response.StatusCode = 401).ToString())); }); routeBuilder.MapPost("token/", context => { var token = new JwtTokenGenerator(); var identy = token.GetIdentity(context.Request.Headers["username"], context.Request.Headers["password"]); if (identy == null) { return(context.Response.WriteAsync("Invalid username or password."));; } var response = new { access_token = token.GenerateToken(identy), username = identy.Name }; context.Response.ContentType = "application/json"; return(context.Response.WriteAsync(JsonConvert.SerializeObject(response, new JsonSerializerSettings { Formatting = Formatting.Indented }))); }); app.UseRouter(routeBuilder.Build()); }