public void ByteConversion() { var value = Passhash.PasswordToPasshash("Str0ngPassw0rd123"); var bytes = new byte[Passhash.ByteSize]; var newValue = value; using (var memoryStream = new MemoryStream(bytes)) { using (var binaryWriter = new BinaryWriter(memoryStream)) { value.ToBytes(binaryWriter); Assert.AreEqual(Passhash.ByteSize, memoryStream.Position); binaryWriter.Seek(0, SeekOrigin.Begin); using (var binaryReader = new BinaryReader(memoryStream)) { newValue = new Passhash(binaryReader); Assert.AreEqual(Passhash.ByteSize, memoryStream.Position); } } } Assert.AreEqual(value, newValue); }
public void PasswordIteration() { var firstValue = Passhash.PasswordToPasshash("Str0ngPassw0rd123"); var secondValue = Passhash.PasswordToPasshash("Str0ngPassw0rd123", 12345); Assert.AreNotEqual(firstValue, secondValue); }
public void NotEquality() { var firstValue = Passhash.PasswordToPasshash("Str0ngPassw0rd123"); var secondValue = Passhash.PasswordToPasshash("OtherStr0ngPassw0rd123"); Assert.AreNotEqual(firstValue, secondValue); }
public void Base64Conversion() { var value = Passhash.PasswordToPasshash("Str0ngPassw0rd123"); var base64 = value.ToBase64(); var newValue = new Passhash(base64); Assert.AreEqual(value, newValue); }
public void LowerBound() { var isThrowed = false; try { _ = Passhash.PasswordToPasshash("12345"); } catch { isThrowed = true; } Assert.IsTrue(isThrowed); }
public async Task <AppUser> CreateAdmin(AppUser AppUser, string password) { var creater = new Passhash(); AppUser.PasswordHash = creater.gethash(password); await _AppUser.InsertOneAsync(AppUser); return(AppUser); }
public void Connect_Incorrect_ID() { var addAccount = new Account(0, false, 0, "test_user1", Passhash.PasswordToPasshash("Str0ngPassw0rd123"), new EmailAddress("*****@*****.**"), Token.Create(), IPAddress.Any); var connectAccount = new Account(1, false, 0, "test_user1", Passhash.PasswordToPasshash("Str0ngPassw0rd123"), new EmailAddress("*****@*****.**"), Token.Create(), IPAddress.Any); var isThrowed = false; try { Connect(addAccount, connectAccount); } catch { isThrowed = true; } Assert.IsTrue(isThrowed); }
/// <summary> /// Creates a new sign in HTTP request class instance /// </summary> public SignInHttpRequest(NameValueCollection queryString) { if (queryString.Count != 2) { throw new ArgumentException(); } name = new Username(queryString.Get(0)); passhash = new Passhash(queryString.Get(1)); }
/// <summary> /// Creates a new account data container class instance /// </summary> public Account(BinaryReader binaryReader) { ID = binaryReader.ReadInt64(); IsBlocked = binaryReader.ReadBoolean(); Level = binaryReader.ReadByte(); Name = new Username(binaryReader); Passhash = new Passhash(binaryReader); EmailAddress = new EmailAddress(binaryReader); AccessToken = new Token(binaryReader); LastUseIpAddress = IPAddressExtension.FromBytes(binaryReader); }
/// <summary> /// Creates a new account data container class instance /// </summary> public Account(long id, bool isBlocked, byte level, Username name, Passhash passhash, EmailAddress emailAddress, Token accessToken, IPAddress lastUseIpAddress) { ID = id; IsBlocked = isBlocked; Level = level; Name = name; Passhash = passhash; EmailAddress = emailAddress; AccessToken = accessToken; LastUseIpAddress = lastUseIpAddress; }
/// <summary> /// Converts account data container to the byte array /// </summary> public void ToBytes(BinaryWriter binaryWriter) { binaryWriter.Write(ID); binaryWriter.Write(IsBlocked); binaryWriter.Write(Level); Name.ToBytes(binaryWriter); Passhash.ToBytes(binaryWriter); EmailAddress.ToBytes(binaryWriter); AccessToken.ToBytes(binaryWriter); LastUseIpAddress.ToBytes(binaryWriter); }
/// <summary> /// Creates a new sign up HTTP request class instance /// </summary> public SignUpHttpRequest(NameValueCollection queryString) { if (queryString.Count != 3) { throw new ArgumentException(); } name = new Username(queryString.Get(0)); passhash = new Passhash(queryString.Get(1)); emailAddress = new EmailAddress(queryString.Get(2)); }
public async Task <AppUser> CreateClient(AppUser AppUser, string password) { var creater = new Passhash(); AppUser.PasswordHash = creater.gethash(password); _AppUser.InsertOne(AppUser); var ussr = _AppUser.Find <AppUser>(x => x.UserName == AppUser.UserName).FirstOrDefault(); var id = ussr.Id; await _accserv.CreateClientAccount(AppUser, id); return(AppUser); }
public async Task <AppUser> UpdatePassword(string id, string newpass) { var creater = new Passhash(); var hashedpass = creater.gethash(newpass); var filter = Builders <AppUser> .Filter.Eq("Id", id); var update = Builders <AppUser> .Update.Set("PasswordHash", hashedpass); await _AppUser.UpdateOneAsync(filter, update); var result = await Get(id); return(result); }
public bool checkPass(string id, string pass) { var appuser = _AppUser.Find <AppUser>(AppUser => AppUser.Id == id).FirstOrDefault(); var creater = new Passhash(); var z = creater.gethash(pass); if (z == appuser.PasswordHash) { return(true); } else { return(false); } }
public static void SeedUsers(IMongoCollection <AppUser> Appuser) { var clients = Appuser.CountDocuments(x => x.Roles[0] == "Admin"); // var clients = Appuser.Find<AppUser>(AppUser => true).ToList(); if (clients < 1) { string pass = "******"; var creater = new Passhash(); AppUser admin = new AppUser(); admin.UserName = "******"; admin.Email = "*****@*****.**"; admin.Roles.Add("Admin"); admin.PasswordHash = creater.gethash(pass); admin.Name = "Amir"; admin.LastName = "Nasser"; Appuser.InsertOne(admin); } }
public async Task <AuthenticationResult> AuthenticateUser(AuthenticationReqest ar) { var user = _AppUser.Find <AppUser>(AppUser => AppUser.UserName == ar.Username).FirstOrDefault(); if (user == null) { return(new AuthenticationResult { Errors = new[] { "User With this username does not exist " } }); } var creater = new Passhash(); var Pass = creater.gethash(ar.Password); bool result = false; if (Pass == user.PasswordHash) { result = true; } // var f1 = Builders<AppUser>.Filter.Eq("PasswordHash",Pass); // var f2 = Builders<AppUser>.Filter.Eq("UserName",ar.Username); // var result = _AppUser.Find<AppUser>(AppUser => AppUser.UserName == Pass).FirstOrDefault(); AuthenticationResult response = new AuthenticationResult(); if (result == false) { return(new AuthenticationResult { Errors = new[] { "Username/password Combination are wrong" } }); } return(await GenerateAuthenticationResultForUserAsync(user)); }
/// <summary> /// Creates a new sign up HTTP request class instance /// </summary> public SignUpHttpRequest(Username name, Passhash passhash, EmailAddress emailAddress) { this.name = name; this.passhash = passhash; this.emailAddress = emailAddress; }
/// <summary> /// Creates a new account instance /// </summary> public IAccount Create(long id, bool isBlocked, byte level, Username name, Passhash passhash, EmailAddress emailAddress, Token accessToken, IPAddress ipAddress) { return(new Account(id, isBlocked, level, name, passhash, emailAddress, accessToken, ipAddress)); }
/// <summary> /// Creates a new sign in HTTP request class instance /// </summary> public SignInHttpRequest(Username name, Passhash passhash) { this.name = name; this.passhash = passhash; }
public void Connect_Correct() { var account = new Account(0, false, 0, "test_user1", Passhash.PasswordToPasshash("Str0ngPassw0rd123"), new EmailAddress("*****@*****.**"), Token.Create(), IPAddress.Any); Connect(account, account); }
private async Task <AuthenticationResult> GenerateAuthenticationResultForUserAsync(AppUser user) { var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_jwtSettings.Secret); var userR = _AppUser.Find <AppUser>(x => x.Id == user.Id).FirstOrDefault(); var userrole = userR.Roles; var claimlist = new List <Claim> { new Claim(JwtRegisteredClaimNames.Sub, user.UserName), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim("id", userR.Id), new Claim("name", userR.UserName), new Claim("role", userrole.FirstOrDefault()) }; var claims = new List <IdentityUserClaim>(); for (int i = 0; i < claimlist.Count; i++) { claims.Add(new IdentityUserClaim(claimlist[i])); } foreach (var userRole in userrole) { Claim claim = new Claim(ClaimTypes.Role, userRole); claims.Add(new IdentityUserClaim(claim)); } var filter = Builders <AppUser> .Filter.Eq("Id", userR.Id); var userClaims = _AppUser.Find <AppUser>(filter).FirstOrDefault(); var CurrentClaims = userClaims.Claims; CurrentClaims.AddRange(claims); var update = Builders <AppUser> .Update.Set("Claims", CurrentClaims); await _AppUser.UpdateOneAsync(filter, update); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claimlist), Expires = DateTime.Now.Add(_jwtSettings.TokenLifetime), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var creater = new Passhash(); var refreshToken = new RefreshToken { Token = creater.gethash(token.Id), JwtId = token.Id, AppUserID = user.Id, Created = DateTime.Now, Expires = DateTime.Now.AddMonths(6) }; await _refresh.InsertOneAsync(refreshToken); return(new AuthenticationResult { Username = user.UserName, Success = true, Token = tokenHandler.WriteToken(token), RefreshToken = refreshToken.Token, }); }