コード例 #1
0
        public Task <ClaimsPrincipal> AuthenticateLoginAsync(PostUserLogin loginEntity)
        {
            lock (authenticationServiceLock)
            {
                return(Task.Run(() => {
                    var user = userRepository.GetUserLogin(loginEntity.Username);

                    if (user == null)
                    {
                        return null;
                    }

                    if (userConnectionsService.GameConnectionService.GetConnection(user.UserLoginID) != null ||
                        userConnectionsService.ChatConnectionService.GetConnection(user.UserLoginID) != null)
                    {
                        return null;
                    }

                    if (!Authentication.AuthenticateLoginCredentials(user.PasswordSalt, loginEntity.Password, user.PasswordHash))
                    {
                        return null;
                    }

                    return GetClaimsPrincipal(user);
                }));
            }
        }
コード例 #2
0
        public void Test()
        {
            string password = "******";
            string salt1    = Authentication.GenerateSalt();
            string salt2    = Authentication.GenerateSalt();

            string hashPassword1 = Authentication.HashPassword(password, salt1);
            string hashPassword2 = Authentication.HashPassword(password, salt2);

            Assert.AreNotEqual(hashPassword1, hashPassword2);

            Assert.AreEqual(true, Authentication.AuthenticateLoginCredentials(salt1, password, hashPassword1));
            Assert.AreEqual(true, Authentication.AuthenticateLoginCredentials(salt2, password, hashPassword2));
        }