/// <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); }
/// <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"); } }
// 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); }