private void HandleMessage(PasswordRequestMessage message)
        {
            var verifed = false;

            var args = new PasswordUserAuthArgs(_session, message.Username, message.Password);

            if (UserAuth != null)
            {
                UserAuth(this, args);
                verifed = args.Result;
            }

            if (verifed)
            {
                _session.RegisterService(message.ServiceName, args);

                Succeed?.Invoke(this, message.ServiceName);

                _session.SendMessage(new SuccessMessage());
                return;
            }
            else
            {
                _session.SendMessage(new FailureMessage());
                //  throw new SshConnectionException("Authentication fail.", DisconnectReason.NoMoreAuthMethodsAvailable);
            }
        }
Esempio n. 2
0
        private void HandleMessage(PasswordRequestMessage message)
        {
            var verifed = false;

            var args = new UserauthArgs(_session, message.Username, message.Password);

            if (Userauth != null)
            {
                Userauth(this, args);
                verifed = args.Result;
            }

            if (verifed)
            {
                _session.RegisterService(message.ServiceName, args);

                Succeed?.Invoke(this, message.ServiceName);

                _session.SendMessage(new SuccessMessage());
                return;
            }
            else
            {
                _session.SendMessage(new FailureMessage());
            }
        }
        public void MustHandlePasswordRequestCorrectly()
        {
            var passwordRequested = false;
            var purpose           = PasswordRequestPurpose.LocalAdministrator;
            var requestId         = Guid.NewGuid();
            var resetEvent        = new AutoResetEvent(false);

            sut.PasswordRequested += (args) =>
            {
                passwordRequested = args.Purpose == purpose && args.RequestId == requestId;
                resetEvent.Set();
            };
            sut.AuthenticationToken = Guid.Empty;

            var token   = sut.Connect(Guid.Empty).CommunicationToken.Value;
            var message = new PasswordRequestMessage(purpose, requestId)
            {
                CommunicationToken = token
            };
            var response = sut.Send(message);

            resetEvent.WaitOne();

            Assert.IsTrue(passwordRequested);
            Assert.IsNotNull(response);
            Assert.IsInstanceOfType(response, typeof(SimpleResponse));
            Assert.AreEqual(SimpleResponsePurport.Acknowledged, (response as SimpleResponse)?.Purport);
        }
        private void HandleMessage(PasswordRequestMessage message)
        {
            var args = new UserauthArgs(null, null, null);

            if (this.Session.AuthenticationMethods == null ||
                !this.Session.AuthenticationMethods.ContainsKey(AuthenticationMethod.Password))
            {
                this.Session.SendMessage(new FailureMessage());
                return;
            }

            // Handle authentication here
            if (message.Password != "password")
            {
                this.Session.SendMessage(new FailureMessage());
                return;
            }

            this.AuthenticationSuccessful(message, args, AuthenticationMethod.Password);
        }