/// <summary>
        /// Check CONNECT message to accept or not the connection request
        /// </summary>
        /// <param name="connect">CONNECT message received from client</param>
        /// <returns>Return code for CONNACK message</returns>
        private byte ConnectVerify(MqttMsgConnect connect)
        {
            byte returnCode = MqttMsgConnack.CONN_ACCEPTED;

            // unacceptable protocol version
            if (connect.ProtocolVersion != MqttMsgConnect.PROTOCOL_VERSION_V3_1_1)
            {
                returnCode = MqttMsgConnack.CONN_REFUSED_PROT_VERS;
            }
            else
            {
                // [v.3.1.1] client id zero length is allowed but clean session must be true
                if ((connect.ClientId.Length == 0) && (!connect.CleanSession))
                {
                    returnCode = MqttMsgConnack.CONN_REFUSED_IDENT_REJECTED;
                }
                else
                if (!MqttSettings.Instance.ControlSytemAuthentication)
                {
                    if (MqttSettings.Instance.Username != null && MqttSettings.Instance.Password != null && (connect.Username != MqttSettings.Instance.Username || connect.Password != MqttSettings.Instance.Password))
                    {
                        return(returnCode = MqttMsgConnack.CONN_REFUSED_USERNAME_PASSWORD);
                    }
                }
                else
                {
                    Authentication.UserInformation userInformation = Authentication.ValidateUserInformation(connect.Username, connect.Password);
                    if (!userInformation.Authenticated || (userInformation.Authenticated && (userInformation.Access != "Administrator" && !userInformation.Groups.Contains("MQTT"))))
                    {
                        return(returnCode = MqttMsgConnack.CONN_REFUSED_USERNAME_PASSWORD);
                    }
                }
            }
            return(returnCode);
        }
Exemple #2
0
        /// <summary>
        /// The default Constructor.
        /// </summary>
        internal Session(Authentication.UserInformation user)
        {
            _expiryTime = DateTime.Now.Add(TimeSpan.FromMinutes(120));
            _user       = user;
            var md5  = MD5.Create();
            var hash = md5.ComputeHash(Encoding.ASCII.GetBytes(DateTime.Now + _user.UserName));

            _sessionId = string.Empty;
            foreach (var b in hash)
            {
                _sessionId = _sessionId + b.ToString("x2");
            }
        }
Exemple #3
0
        // public override bool ValidateUserInformation(string uname, string pword);

        public ushort UserInfo(string uname, string pword) // processor must have adlogin and an AD User defined in a group
        {
            ushort numBack = 0;

            Authentication.UserInformation myUser = new Authentication.UserInformation();
            myUser = Authentication.ValidateUserInformation(uname, pword);
            CrestronConsole.PrintLine("Results of auth check.. Authenticated = {0}, User = {1}, Access = {2}.", myUser.Authenticated, myUser.UserName, myUser.Access);
            if (myUser.Authenticated)
            {
                numBack = 1;
            }
            else
            {
                numBack = 0;
            }
            return(numBack);
        }