private void ConfigureServices(IServiceCollection services) { services.AddSingleton <IConsole, PxConsole>(); Pulxer.BL.ConfigureServices(services, _config, DataProtect.TryUnProtect(_config.GetConnectionString("Pulxer")), DataProtect.TryUnProtect(_config.GetConnectionString("Leech"))); }
public string BuildJwtToken(IConfiguration config, User user, out DateTime expTime) { var jwtConfig = config.GetSection("JwtToken"); string key = DataProtect.TryUnProtect(jwtConfig.GetValue("Key", AuthOptions.KEY)); string issuer = jwtConfig.GetValue("Issuer", AuthOptions.ISSUER); string audience = jwtConfig.GetValue("Audience", AuthOptions.AUDIENCE); int lifetime = jwtConfig.GetValue("Lifetime", AuthOptions.LIFETIME); var now = DateTime.UtcNow; expTime = now.Add(TimeSpan.FromMinutes(lifetime)); var claims = new List <Claim> { new Claim(ClaimsIdentity.DefaultNameClaimType, user.UserID.ToString()), new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role) }; var jwt = new JwtSecurityToken( issuer: issuer, audience: audience, notBefore: now, claims: claims, expires: expTime, signingCredentials: new SigningCredentials(AuthOptions.GetSymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256)); return(new JwtSecurityTokenHandler().WriteToken(jwt)); }
public void ConfigureServices(IServiceCollection services) { var jwtConfig = _config.GetSection("JwtToken"); string key = DataProtect.TryUnProtect(jwtConfig.GetValue("Key", AuthOptions.KEY)); services.AddAuthentication(opt => { opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(opt => { //opt.RequireHttpsMetadata = _environment.IsProduction(); opt.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = jwtConfig.GetValue("Issuer", AuthOptions.ISSUER), ValidateAudience = true, ValidAudience = jwtConfig.GetValue("Audience", AuthOptions.AUDIENCE), ValidateLifetime = true, ClockSkew = TimeSpan.Zero, IssuerSigningKey = AuthOptions.GetSymmetricSecurityKey(key), ValidateIssuerSigningKey = true }; }); services.AddControllers(); string pulxerConnectionString = DataProtect.TryUnProtect(_config.GetConnectionString("Pulxer")); string leechConnectionString = DataProtect.TryUnProtect(_config.GetConnectionString("Leech")); Pulxer.BL.ConfigureServices(services, _config, pulxerConnectionString, leechConnectionString); }
public async Task Token() { var username = Request.Form["username"]; var password = Request.Form["password"]; var identity = GetIdentity(username, password); if (identity == null) { Response.StatusCode = 400; await Response.WriteAsync("Invalid login or password."); return; } var jwtConfig = _config.GetSection("JwtToken"); string key = DataProtect.TryUnProtect(jwtConfig.GetValue("Key", AuthOptions.KEY)); string issuer = jwtConfig.GetValue("Issuer", AuthOptions.ISSUER); string audience = jwtConfig.GetValue("Audience", AuthOptions.AUDIENCE); int lifetime = jwtConfig.GetValue("Lifetime", AuthOptions.LIFETIME); var now = DateTime.UtcNow; var jwt = new JwtSecurityToken( issuer: issuer, audience: audience, notBefore: now, claims: identity.Claims, expires: now.Add(TimeSpan.FromMinutes(lifetime)), signingCredentials: new SigningCredentials(AuthOptions.GetSymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256)); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); var response = new { access_token = encodedJwt, username = identity.Name }; Response.ContentType = "application/json"; await Response.WriteAsync(JsonConvert.SerializeObject(response, new JsonSerializerSettings { Formatting = Formatting.Indented })); }