Exemplo n.º 1
0
 private void setStatus(CswEnumAuthenticationStatus Status, CswNbtObjClassUser User = null)
 {
     LoginStatus   = Status == CswEnumAuthenticationStatus.Authenticated ? "Success" : "Failed";
     FailureReason = CswEnumAuthenticationStatus.EuphamizedText[Status];
     if (Status == CswEnumAuthenticationStatus.Failed)
     {
         FailureReason = null == User ? "Unknown Username" : "Bad Password";
     }
 }
Exemplo n.º 2
0
        public CswEnumAuthenticationStatus authenticate()
        {
            CswEnumAuthenticationStatus Ret = _AuthenticationStatus;

            if (Ret != CswEnumAuthenticationStatus.Authenticated)
            {
                Ret = _authenticate();
            }
            return(Ret);
        }
Exemplo n.º 3
0
        public void AuthenticateWithSchemaTest_AuthenticatedMixedCase()
        {
            CswWebSvcSessionAuthenticateData.Authentication.Request AuthenticationRequest = new CswWebSvcSessionAuthenticateData.Authentication.Request();
            AuthenticationRequest.UserName  = "******";
            AuthenticationRequest.Password  = "******";
            AuthenticationRequest.IpAddress = "127.0.0.1";

            TestData.Nodes.createUserNode("GooDuseR", "goodpw1!");
            CswEnumAuthenticationStatus Expected = CswEnumAuthenticationStatus.Authenticated;
            ICswUser User;

            AuthenticationRequest.AuthenticationStatus = CswEnumAuthenticationStatus.Failed;
            AuthenticationRequest.AuthenticationStatus = _SchemaAuthenticator.AuthenticateWithSchema(_CswEncryption, AuthenticationRequest, out User);
            Assert.AreEqual(Expected.ToString(), AuthenticationRequest.AuthenticationStatus.ToString(), "User was not authenticated.");
        }
Exemplo n.º 4
0
        public void AuthenticateWithSchemaTest_FailedArchived()
        {
            CswWebSvcSessionAuthenticateData.Authentication.Request AuthenticationRequest = new CswWebSvcSessionAuthenticateData.Authentication.Request {
                UserName = "******", Password = "******", IpAddress = "127.0.0.1"
            };

            TestData.Nodes.createUserNode("gooduser", "goodpw1!", isArchived: CswEnumTristate.True);

            CswEnumAuthenticationStatus Expected = CswEnumAuthenticationStatus.Archived;
            ICswUser User;

            AuthenticationRequest.AuthenticationStatus = CswEnumAuthenticationStatus.Failed;
            AuthenticationRequest.AuthenticationStatus = _SchemaAuthenticator.AuthenticateWithSchema(_CswEncryption, AuthenticationRequest, out User);
            Assert.AreEqual(Expected.ToString(), AuthenticationRequest.AuthenticationStatus.ToString(), "User was not archived.");
        }
Exemplo n.º 5
0
        public void AuthenticateWithSchemaTest_FailedBadPasswordMixedCase()
        {
            CswWebSvcSessionAuthenticateData.Authentication.Request AuthenticationRequest = new CswWebSvcSessionAuthenticateData.Authentication.Request {
                UserName = "******", Password = "******", IpAddress = "127.0.0.1"
            };

            TestData.Nodes.createUserNode("gooduser", "goodpw1!");

            CswEnumAuthenticationStatus Expected = CswEnumAuthenticationStatus.Failed;
            ICswUser User;

            AuthenticationRequest.AuthenticationStatus = CswEnumAuthenticationStatus.Failed;
            AuthenticationRequest.AuthenticationStatus = _SchemaAuthenticator.AuthenticateWithSchema(_CswEncryption, AuthenticationRequest, out User);
            Assert.AreEqual(Expected.ToString(), AuthenticationRequest.AuthenticationStatus.ToString(), "User did not fail authentication as expected.");
        }
Exemplo n.º 6
0
 /// <summary>
 /// Finalize this request to set Authentication, Logging, Performance and Error content to the response.
 /// </summary>
 public void finalize(ICswResources CswResources, HttpContext HttpContext, CswEnumAuthenticationStatus AuthenticationStatus)
 {
     try
     {
         CswWebSvcCommonMethods.wAddAuthenticationStatus((CswNbtResources)CswResources, null, this, AuthenticationStatus, HttpContext);
     }
     catch (Exception Exception)
     {
         addException(CswResources, Exception);
     }
     // ******************************************
     // IT IS VERY IMPORTANT for this function not to require the use of database resources,
     // since it occurs AFTER the call to _deInitResources(), and thus will leak Oracle connections
     // (see case 26273)
     // ******************************************
 }//finaize()
        public CswEnumAuthenticationStatus GetAuthStatus(CswNbtObjClassUser UserNode)
        {
            CswEnumAuthenticationStatus AuthStatus = CswEnumAuthenticationStatus.Failed;

            if (UserNode == null)
            {
                AuthStatus = CswEnumAuthenticationStatus.Failed;
            }
            else if (UserNode.getFailedLoginCount() == 0)
            {
                AuthStatus = CswEnumAuthenticationStatus.Authenticated;
                if (UserNode.IsArchived())
                {
                    AuthStatus = CswEnumAuthenticationStatus.Archived;
                }
                else if (UserNode.IsAccountLocked())
                {
                    AuthStatus = CswEnumAuthenticationStatus.Locked;
                }
            }
            return(AuthStatus);
        }
Exemplo n.º 8
0
        public static void wAddAuthenticationStatus(CswNbtResources CswNbtResources, CswSessionResourcesNbt CswSessionResources, CswWebSvcReturn SvcReturn, CswEnumAuthenticationStatus AuthenticationStatusIn, HttpContext HttpContext)
        {
            // ******************************************
            // IT IS VERY IMPORTANT for this function not to require the use of database resources,
            // since it occurs AFTER the call to _deInitResources(), and thus will leak Oracle connections
            // (see case 26273)
            // ******************************************
            if (null != SvcReturn)
            {
                SvcReturn.Authentication = SvcReturn.Authentication ?? new CswWebSvcSessionAuthenticateData.Authentication.Response();
                SvcReturn.Authentication.AuthenticationStatus = AuthenticationStatusIn;
                if (null != CswNbtResources)
                {
                    if (null != CswNbtResources.CswSessionManager)
                    {
                        SvcReturn.Authentication.TimeOut = CswDateTime.ToClientAsJavascriptString(CswNbtResources.CswSessionManager.TimeoutDate);
                    }
                    if (SvcReturn.Authentication.AuthenticationStatus == CswEnumAuthenticationStatus.ExpiredPassword)
                    {
                        SvcReturn.Authentication.ExpirationReset = new CswWebSvcSessionAuthenticateData.Authentication.Response.Expired();

                        ICswNbtUser CurrentUser = CswNbtResources.CurrentNbtUser;
                        SvcReturn.Authentication.ExpirationReset.UserId = CurrentUser.UserId.ToString();
                        CswNbtNodeKey FakeKey = new CswNbtNodeKey()
                        {
                            NodeId        = CurrentUser.UserId,
                            NodeSpecies   = CswEnumNbtNodeSpecies.Plain,
                            NodeTypeId    = CurrentUser.UserNodeTypeId,
                            ObjectClassId = CurrentUser.UserObjectClassId
                        };
                        SvcReturn.Authentication.ExpirationReset.UserKey = FakeKey.ToString();
                        CswPropIdAttr PasswordPropIdAttr = new CswPropIdAttr(CurrentUser.UserId, CurrentUser.PasswordPropertyId);
                        SvcReturn.Authentication.ExpirationReset.PasswordId = PasswordPropIdAttr.ToString();
                    }

                    SvcReturn.Performance               = SvcReturn.Performance ?? new CswWebSvcReturnBase.Performance();
                    SvcReturn.Performance.ServerInit    = Math.Round(CswNbtResources.ServerInitTime, 3);
                    SvcReturn.Performance.DbDeinit      = Math.Round(CswNbtResources.CswLogger.DbInitTime, 3);
                    SvcReturn.Performance.DbQuery       = Math.Round(CswNbtResources.CswLogger.DbQueryTime, 3);
                    SvcReturn.Performance.DbCommit      = Math.Round(CswNbtResources.CswLogger.DbCommitTime, 3);
                    SvcReturn.Performance.DbDeinit      = Math.Round(CswNbtResources.CswLogger.DbDeInitTime, 3);
                    SvcReturn.Performance.TreeLoaderSql = Math.Round(CswNbtResources.CswLogger.TreeLoaderSQLTime, 3);
                    SvcReturn.Performance.ServerTotal   = Math.Round(CswNbtResources.TotalServerTime, 3);

                    SvcReturn.Logging            = SvcReturn.Logging ?? new CswWebSvcReturnBase.Logging();
                    SvcReturn.Logging.CustomerId = CswNbtResources.AccessId;
                    SvcReturn.Logging.Server     = Environment.MachineName;
                    CswEnumLogLevels LogLevel = CswNbtResources.ConfigVbls.getConfigVariableValue(CswEnumConfigurationVariableNames.Logging_Level);

                    if (LogLevel == CswNbtResources.UnknownEnum)
                    {
                        LogLevel = CswEnumLogLevels.Error;
                    }
                    SvcReturn.Logging.LogLevel = LogLevel;

                    // Return any messages acquired along the way
                    if (null != CswNbtResources.Messages && CswNbtResources.Messages.Count > 0)
                    {
                        SvcReturn.Status.Messages = CswNbtResources.Messages;
                    }
                }
            }
            HttpCookie AuthStatusCookie = HttpContext.Request.Cookies["CswAuthStatus"];

            if (null == AuthStatusCookie)
            {
                AuthStatusCookie = new HttpCookie("CswAuthStatus")
                {
                    HttpOnly = true
                };
            }
            if (AuthStatusCookie.Value != AuthenticationStatusIn.ToString())
            {
                AuthStatusCookie.Value = AuthenticationStatusIn;
                HttpContext.Response.Cookies.Add(AuthStatusCookie);
            }
        } // wAddAuthenticationStatus()
Exemplo n.º 9
0
        public static void jAddAuthenticationStatus(CswNbtResources CswNbtResources, CswSessionResourcesNbt CswSessionResources, JObject SvcReturn, CswEnumAuthenticationStatus AuthenticationStatusIn, bool IsMobile = false)
        {
            if (SvcReturn != null)
            {
                SvcReturn["AuthenticationStatus"]     = AuthenticationStatusIn.ToString();
                SvcReturn["AuthenticationStatusText"] = CswEnumAuthenticationStatus.EuphamizedText[AuthenticationStatusIn];
                if (false == IsMobile)
                {
                    SvcReturn["server"] = Environment.MachineName;
                    if (null != CswNbtResources)
                    {
                        if (null != CswNbtResources.CswSessionManager)
                        {
                            SvcReturn["timeout"] = CswDateTime.ToClientAsJavascriptString(CswNbtResources.CswSessionManager.TimeoutDate);
                        }
                        if (AuthenticationStatusIn == CswEnumAuthenticationStatus.ExpiredPassword)
                        {
                            ICswNbtUser CurrentUser = CswNbtResources.CurrentNbtUser;
                            SvcReturn.Add(new JProperty("nodeid", CurrentUser.UserId.ToString()));
                            CswNbtNodeKey FakeKey = new CswNbtNodeKey()
                            {
                                NodeId        = CurrentUser.UserId,
                                NodeSpecies   = CswEnumNbtNodeSpecies.Plain,
                                NodeTypeId    = CurrentUser.UserNodeTypeId,
                                ObjectClassId = CurrentUser.UserObjectClassId
                            };
                            SvcReturn.Add(new JProperty("nodekey", FakeKey.ToString()));
                            CswPropIdAttr PasswordPropIdAttr = new CswPropIdAttr(CurrentUser.UserId, CurrentUser.PasswordPropertyId);
                            SvcReturn.Add(new JProperty("passwordpropid", PasswordPropIdAttr.ToString()));
                        }

                        SvcReturn["timer"] = new JObject();

                        SvcReturn["timer"]["serverinit"] = Math.Round(CswNbtResources.ServerInitTime, 3);
                        CswEnumLogLevels LogLevel = CswNbtResources.ConfigVbls.getConfigVariableValue(CswEnumConfigurationVariableNames.Logging_Level);
                        if (LogLevel == CswNbtResources.UnknownEnum)
                        {
                            LogLevel = CswEnumLogLevels.Error;
                        }
                        SvcReturn["LogLevel"] = LogLevel.ToString().ToLower();

                        SvcReturn["timer"]["customerid"]    = CswNbtResources.AccessId;
                        SvcReturn["timer"]["dbinit"]        = Math.Round(CswNbtResources.CswLogger.DbInitTime, 3);
                        SvcReturn["timer"]["dbquery"]       = Math.Round(CswNbtResources.CswLogger.DbQueryTime, 3);
                        SvcReturn["timer"]["dbcommit"]      = Math.Round(CswNbtResources.CswLogger.DbCommitTime, 3);
                        SvcReturn["timer"]["dbdeinit"]      = Math.Round(CswNbtResources.CswLogger.DbDeInitTime, 3);
                        SvcReturn["timer"]["treeloadersql"] = Math.Round(CswNbtResources.CswLogger.TreeLoaderSQLTime, 3);
                        SvcReturn["timer"]["servertotal"]   = Math.Round(CswNbtResources.TotalServerTime, 3);

                        // Return any messages acquired along the way
                        if (null != CswNbtResources.Messages && CswNbtResources.Messages.Count > 0)
                        {
                            JArray Messages = new JArray();
                            SvcReturn["messages"] = Messages;
                            foreach (CswWebSvcReturnBase.ErrorMessage Message in CswNbtResources.Messages)
                            {
                                Messages.Add(Message.ToJObject());
                            }
                        }
                    }//if( null != CswNbtResources )
                }
            }
        }
Exemplo n.º 10
0
        private CswEnumAuthenticationStatus _authenticate()
        {
            CswEnumAuthenticationStatus AuthenticationStatus = CswEnumAuthenticationStatus.Unknown;

            try
            {
                string ParsedAccessId = _AuthenticationRequest.CustomerId.ToLower().Trim();
                if (false == string.IsNullOrEmpty(ParsedAccessId))
                {
                    _CswSessionManager.setAccessId(ParsedAccessId);
                }
                else
                {
                    throw new CswDniException(CswEnumErrorType.Warning, "There is no configuration information for this AccessId", "AccessId is null or empty.");
                }
            }
            catch (CswDniException ex)
            {
                if (!ex.Message.Contains("There is no configuration information for this AccessId"))
                {
                    throw ex;
                }
                else
                {
                    AuthenticationStatus = CswEnumAuthenticationStatus.NonExistentAccessId;
                }
            }

            if (AuthenticationStatus == CswEnumAuthenticationStatus.Unknown)
            {
                AuthenticationStatus = _CswSessionManager.beginSession(_AuthenticationRequest);
            }

            // case 21211
            if (AuthenticationStatus == CswEnumAuthenticationStatus.Authenticated)
            {
                // Removed for case 28617.  See case 28621.
                //// case 21036
                //if( _AuthenticationRequest.IsMobile &&
                //    false == _CswNbtResources.Modules.IsModuleEnabled( CswNbtModuleName.SI ) )
                //{
                //    AuthenticationStatus = AuthenticationStatus.ModuleNotEnabled;
                //    _CswSessionManager.clearSession();
                //}
                CswLicenseManager LicenseManager = new CswLicenseManager(_CswNbtResources);
                if (LicenseManager.MustShowLicense(_CswNbtResources.CurrentUser))
                {
                    if (LicenseManager.AllowShowLicense(_CswNbtResources.CurrentUser))
                    {
                        // BZ 8133 - make sure they've seen the License
                        AuthenticationStatus = CswEnumAuthenticationStatus.ShowLicense;
                    }
                    else
                    {
                        // case 30086 - prevent login if admin hasn't accepted the license yet
                        AuthenticationStatus = CswEnumAuthenticationStatus.NoLicense;
                        _CswSessionManager.clearSession();
                    }
                }
                else if (_CswNbtResources.CurrentNbtUser.PasswordIsExpired)
                {
                    // BZ 9077 - Password expired
                    AuthenticationStatus = CswEnumAuthenticationStatus.ExpiredPassword;
                }
                else if (1 < _CswNbtResources.CswSessionManager.SessionsList.getSessionCountForUser(_CswNbtResources.AccessId, _AuthenticationRequest.UserName) &&
                         false == _AuthenticationRequest.IsMobile &&
                         CswNbtObjClassUser.ChemSWAdminUsername != _CswNbtResources.CurrentUser.Username)
                {
                    AuthenticationStatus = CswEnumAuthenticationStatus.AlreadyLoggedIn;
                }
            }

            return(AuthenticationStatus);
        }
        }//_initResources()

        public CswEnumAuthenticationStatus authenticate()
        {
            CswEnumAuthenticationStatus Ret = CswEnumAuthenticationStatus.Unknown;

            //We're keeping this logic here, because we don't want to contaminate NbtLogic with the necessary web libraries required to support CswSessionResourcesNbt
            if (null != _AuthenticationRequest && _AuthenticationRequest.IsValid())
            {
                if (false == CswTools.IsValidUsername(_AuthenticationRequest.CustomerId))
                {
                    Ret = CswEnumAuthenticationStatus.NonExistentAccessId;
                }
                else
                {
                    Ret = _SessionAuthenticate.authenticate();
                }
            }
            else
            {
                Ret = _CswSessionResourcesNbt.attemptRefresh();
            }

            //Set audit context
            if (Ret == CswEnumAuthenticationStatus.Authenticated && null != _HttpContext.Request.Cookies)
            {
                string ContextViewId     = string.Empty;
                string ContextActionName = string.Empty;

                if (null != _HttpContext.Request.Cookies["csw_currentviewid"])
                {
                    ContextViewId = _HttpContext.Request.Cookies["csw_currentviewid"].Value;
                }
                if (null != _HttpContext.Request.Cookies["csw_currentactionname"])
                {
                    ContextActionName = _HttpContext.Request.Cookies["csw_currentactionname"].Value;
                }

                if (string.Empty != ContextViewId)
                {
                    CswNbtView ContextView = null;
                    if (CswNbtViewId.isViewIdString(ContextViewId))
                    {
                        CswNbtViewId realViewid = new CswNbtViewId(ContextViewId);
                        ContextView = _CswNbtResources.ViewSelect.restoreView(realViewid);
                    }
                    else if (CswNbtSessionDataId.isSessionDataIdString(ContextViewId))
                    {
                        CswNbtSessionDataId SessionViewid = new CswNbtSessionDataId(ContextViewId);
                        ContextView = _CswNbtResources.ViewSelect.getSessionView(SessionViewid);
                    }
                    if (null != ContextView)
                    {
                        _CswNbtResources.AuditContext = ContextView.ViewName + " (" + ContextView.ViewId.ToString() + ")";
                    }
                }
                else if (string.Empty != ContextActionName)
                {
                    CswNbtAction ContextAction = _CswNbtResources.Actions[CswNbtAction.ActionNameStringToEnum(ContextActionName)];
                    if (null != ContextAction)
                    {
                        _CswNbtResources.AuditContext = CswNbtAction.ActionNameEnumToString(ContextAction.Name) + " (Action_" + ContextAction.ActionId.ToString() + ")";
                    }
                }
            }

            _CswNbtResources.ServerInitTime = _Timer.ElapsedDurationInMilliseconds;

            return(Ret);
        }//autheticate