private string getToken(DTOAuthentication utente) { using (var context = new MAuthentication.AuthenticationModel()) { var password = utente.EncryptedPassword; if (utente == null) { return(null); } var user = GetByCondition(x => string.Equals(x.UserName, utente.UserName, StringComparison.InvariantCultureIgnoreCase) && x.Password.Equals(password) && x.Active); if (user == null) { return(string.Empty); } if (string.IsNullOrEmpty(user.Token)) { generateNewToken(user); } user.CreationDateTime = DateTime.UtcNow; UpdateLoginDate(user); utente.Token = user.Token; return(user.Token); } }
//TODO: deve essere parte della chiamata a webapi (provare con Application_AuthorizeRequest o simili) public void SetLastCallDateTime(string token) { using (var context = new MAuthentication.AuthenticationModel()) { var tabuser = context.Users.FirstOrDefault(x => x.Token == token); if (tabuser == null) { return; } tabuser.LastRequestDateTime = DateTime.UtcNow; context.Entry(tabuser).State = System.Data.Entity.EntityState.Modified; context.SaveChanges(); } }
protected void UpdateLoginDate(DTOAuthentication user) { using (var context = new MAuthentication.AuthenticationModel()) { var tabuser = context.Users.FirstOrDefault(x => x.Token.Equals(user.Token)); if (user == null) { return; } user.CreationDateTime = DateTime.UtcNow; tabuser.LastRequestDateTime = DateTime.UtcNow; context.Entry(tabuser).State = EntityState.Modified; context.SaveChanges(); } }
protected DTOAuthentication GetByCondition(Func <Users, bool> expression) { using (var context = new MAuthentication.AuthenticationModel()) { var user = context.Users.FirstOrDefault(expression); if (user == null) { return(null); } return(new DTOAuthentication { CreationDateTime = user.ActivationDate, LastRequestTime = user.LastRequestDateTime, Token = user.Token, UserName = user.UserName, EncryptedPassword = user.Password, IsActive = user.Active }); } }
protected string encrypt(string strToEncrypt) { using (var context = new MAuthentication.AuthenticationModel()) { if (string.IsNullOrEmpty(Options.CryptEntropyValues.OptionValue)) { var bytes = new byte[20]; RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); rng.GetBytes(bytes); Options.CryptEntropyValues.OptionValue = Convert.ToBase64String(bytes); } if (Options.SaltStringBytes.OptionValue.Length <= 0) { Options.SaltStringBytes.OptionValue = StringCipher.Generate256BitsOfRandomEntropy(); } if (Options.IvStringBytes.OptionValue.Length <= 0) { Options.IvStringBytes.OptionValue = StringCipher.Generate256BitsOfRandomEntropy(); } return(StringCipher.Encrypt(strToEncrypt, Options.CryptEntropyValues.OptionValue, Options.SaltStringBytes.OptionValue, Options.IvStringBytes.OptionValue)); } }