public void Authenticate_Returns_ClientFinalMessage()
        {
            var mockedService = new Mock <IIOService>();

            mockedService.Setup(x => x.Execute(It.IsAny <SaslStart>(), It.IsAny <IConnection>()))
            .Returns(new OperationResult <string>()
            {
                Status  = ResponseStatus.AuthenticationContinue,
                Message = "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096"
            });


            mockedService.Setup(x => x.Execute(It.IsAny <SaslStep>(), It.IsAny <IConnection>()))
            .Returns(new OperationResult <string>()
            {
                Status  = ResponseStatus.AuthenticationContinue,
                Message = "v=rmF9pqV8S7suAoZWja4dJRkFsKQ="
            });

            var mockedConnection = new Mock <IConnection>();
            var authenticator    = new ScramShaMechanism(new DefaultTranscoder(), MechanismType.ScramSha1);

            authenticator.ClientNonce = "fyko+d2lbbFgONRv9qkxdawL";
            authenticator.Authenticate(mockedConnection.Object, "user", "pencil");

            var expected = "c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=";

            Assert.AreEqual(expected, authenticator.ClientFinalMessage);
        }
Exemplo n.º 2
0
        public async Task Authenticate_Connection()
        {
            var options = ClusterFixture.GetClusterOptions();

            options.WithConnectionString(ClusterFixture.GetSettings().ConnectionString);

            var ipEndPointService = new IpEndPointService(
                new DnsClientDnsResolver(new LookupClient(), new DotNetDnsClient(), new Mock <ILogger <DnsClientDnsResolver> >().Object));
            var factory = new ConnectionFactory(options, ipEndPointService,
                                                new Mock <ILogger <MultiplexingConnection> >().Object,
                                                new Mock <ILogger <SslConnection> >().Object);

            var endPoint = options.ConnectionStringValue.GetBootstrapEndpoints().First();

            var connection = await factory
                             .CreateAndConnectAsync(endPoint)
                             .ConfigureAwait(false);

            var sha1Mechanism = new ScramShaMechanism(MechanismType.ScramSha1, options.Password,
                                                      options.UserName, new Mock <ILogger <ScramShaMechanism> >().Object, NoopRequestTracer.Instance,
                                                      new OperationConfigurator(new JsonTranscoder(), Mock.Of <IOperationCompressor>(),
                                                                                new DefaultObjectPool <OperationBuilder>(new OperationBuilderPoolPolicy()),
                                                                                new BestEffortRetryStrategy()));

            await sha1Mechanism.AuthenticateAsync(connection).ConfigureAwait(false);
        }
        public void ScramShaMechanism_Authenticate_IsPopulated()
        {
            var    transcoder = new DefaultTranscoder(new DefaultConverter());
            string password   = "******";
            string username   = "******";

            var mech = new ScramShaMechanism(transcoder, username, password, MechanismType.ScramSha256);

            Assert.That(() => !string.IsNullOrEmpty(mech.ClientNonce));
        }
Exemplo n.º 4
0
        public void ScramShaMechanism_ClientNonce_IsPopulated()
        {
            var transcoder = new LegacyTranscoder();
            var password   = "******";
            var username   = "******";

            var mech = new ScramShaMechanism(transcoder, MechanismType.ScramSha256, username, password,
                                             new Mock <ILogger <ScramShaMechanism> >().Object, NullRequestTracer.Instance);

            Assert.True(!string.IsNullOrEmpty(mech.ClientNonce));
        }
        public void ScramShaMechanism_ClientNonce_IsPopulated()
        {
            var password = "******";
            var username = "******";

            var mech = new ScramShaMechanism(MechanismType.ScramSha256, username, password,
                                             new Mock <ILogger <ScramShaMechanism> >().Object, NoopRequestTracer.Instance,
                                             Mock.Of <IOperationConfigurator>());

            Assert.True(!string.IsNullOrEmpty(mech.ClientNonce));
        }
        public void When_InValid_Credentials_Provided_Authenticate_Returns_False()
        {
            var authenticator = new ScramShaMechanism(_ioService, new DefaultTranscoder(), MechanismType.ScramSha1);
            _ioService.SaslMechanism = authenticator;

            foreach (var connection in _ioService.ConnectionPool.Connections)
            {
                var isAuthenticated = authenticator.Authenticate(connection, "authenticated", "secret2");
                Assert.IsFalse(isAuthenticated);
            }
        }
        public void When_InValid_Credentials_Provided_Authenticate_Returns_False()
        {
            var authenticator = new ScramShaMechanism(new DefaultTranscoder(), MechanismType.ScramSha1);

            _ioService.SaslMechanism = authenticator;

            foreach (var connection in _ioService.ConnectionPool.Connections)
            {
                var isAuthenticated = authenticator.Authenticate(connection, "authenticated", "secret2");
                Assert.IsFalse(isAuthenticated);
            }
        }
        public void DecodeResponse_ConvertsServerResponse_ToDictionary()
        {
            var response =
                "r=SldM4VtjuyfZSJPHsUwgFaAFooUHKcg0l4HJdOkwmho=f740159ca94603c2,s=FOim+HVE8xUmn9Std27QgrqZiWzPLM6K1NiklQ3KunEugY1OSG/jlEzQ9XVdLkcSIqegM5O2gLF2mAQio+CXBA==,i=4096";

            var authenticator = new ScramShaMechanism(new DefaultTranscoder(), MechanismType.ScramSha512);
            var actual        = authenticator.DecodeResponse(response);
            var expected      = new Dictionary <string, string>
            {
                { "r", "SldM4VtjuyfZSJPHsUwgFaAFooUHKcg0l4HJdOkwmho=f740159ca94603c2" },
                { "s", "FOim+HVE8xUmn9Std27QgrqZiWzPLM6K1NiklQ3KunEugY1OSG/jlEzQ9XVdLkcSIqegM5O2gLF2mAQio+CXBA==" },
                { "i", "4096" }
            };

            Assert.AreEqual(expected, actual);
        }
        public void DecodeResponse_ConvertsServerResponse_ToDictionary()
        {
            var response =
                "r=SldM4VtjuyfZSJPHsUwgFaAFooUHKcg0l4HJdOkwmho=f740159ca94603c2,s=FOim+HVE8xUmn9Std27QgrqZiWzPLM6K1NiklQ3KunEugY1OSG/jlEzQ9XVdLkcSIqegM5O2gLF2mAQio+CXBA==,i=4096";

            var authenticator = new ScramShaMechanism(_ioService, new DefaultTranscoder(), MechanismType.ScramSha512);
            var actual = authenticator.DecodeResponse(response);
            var expected = new Dictionary<string, string>
            {
                {"r", "SldM4VtjuyfZSJPHsUwgFaAFooUHKcg0l4HJdOkwmho=f740159ca94603c2"},
                {"s", "FOim+HVE8xUmn9Std27QgrqZiWzPLM6K1NiklQ3KunEugY1OSG/jlEzQ9XVdLkcSIqegM5O2gLF2mAQio+CXBA=="},
                {"i", "4096"}
            };

            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 10
0
        public async Task Authenticate_Connection()
        {
            var options = ClusterFixture.GetClusterOptions();

            options.ConnectionString(ClusterFixture.GetSettings().ConnectionString);

            var factory = new ConnectionFactory(options, new Mock <ILogger <MultiplexingConnection> >().Object,
                                                new Mock <ILogger <SslConnection> >().Object);

            var connection = await factory
                             .CreateAndConnectAsync(options.ServersValue.First().GetIpEndPoint(11210, false))
                             .ConfigureAwait(false);

            var sha1Mechanism = new ScramShaMechanism(new LegacyTranscoder(), MechanismType.ScramSha1, options.Password,
                                                      options.UserName, new Mock <ILogger <ScramShaMechanism> >().Object);

            await sha1Mechanism.AuthenticateAsync(connection).ConfigureAwait(false);
        }
Exemplo n.º 11
0
        public async Task Authenticate_Connection()
        {
            var options = ClusterFixture.GetClusterOptions();

            options.WithConnectionString(ClusterFixture.GetSettings().ConnectionString);

            var factory = new ConnectionFactory(options, new Mock <ILogger <MultiplexingConnection> >().Object,
                                                new Mock <ILogger <SslConnection> >().Object);

            var ipEndPointService = new IpEndPointService(
                new DnsClientDnsResolver(new LookupClient(), new Mock <ILogger <DnsClientDnsResolver> >().Object),
                options);
            var ipEndPoint = await ipEndPointService.GetIpEndPointAsync(
                options.ConnectionStringValue.GetBootstrapEndpoints().First().Host, 11210);

            var connection = await factory
                             .CreateAndConnectAsync(ipEndPoint)
                             .ConfigureAwait(false);

            var sha1Mechanism = new ScramShaMechanism(new LegacyTranscoder(), MechanismType.ScramSha1, options.Password,
                                                      options.UserName, new Mock <ILogger <ScramShaMechanism> >().Object);

            await sha1Mechanism.AuthenticateAsync(connection).ConfigureAwait(false);
        }
        public void ScramShaMechanism_Authenticate_IsPopulated()
        {
            var service = new Mock<IIOService>().Object;
            var transcoder = new DefaultTranscoder(new DefaultConverter());
            string password = "******";
            string username = "******";

            var mech = new ScramShaMechanism(service, transcoder, username, password, MechanismType.ScramSha256);
            Assert.That(() => !string.IsNullOrEmpty(mech.ClientNonce));
        }
        public void Authenticate_Returns_ClientFinalMessage()
        {
            var mockedService = new Mock<IIOService>();
            mockedService.Setup(x => x.Execute(It.IsAny<SaslStart>(), It.IsAny<IConnection>()))
                .Returns(new OperationResult<string>()
                {
                    Status = ResponseStatus.AuthenticationContinue,
                    Message = "r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096"
                });


            mockedService.Setup(x => x.Execute(It.IsAny<SaslStep>(), It.IsAny<IConnection>()))
                .Returns(new OperationResult<string>()
                {
                    Status = ResponseStatus.AuthenticationContinue,
                    Message = "v=rmF9pqV8S7suAoZWja4dJRkFsKQ="
                });

            var mockedConnection = new Mock<IConnection>();
            var authenticator = new ScramShaMechanism(mockedService.Object, new DefaultTranscoder(), MechanismType.ScramSha1);
            authenticator.ClientNonce = "fyko+d2lbbFgONRv9qkxdawL";
            authenticator.Authenticate(mockedConnection.Object, "user", "pencil");

            var expected = "c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=";
            Assert.AreEqual(expected, authenticator.ClientFinalMessage);
        }