示例#1
0
        public static AuthenticateResult CheckUser(User user, string username, GeneralSettingsApp generalSetting)
        {
            var authenticateResult = new AuthenticateResult
            {
                Username        = username,
                IsAuthenticated = false,
                CheckUserIsOk   = false
            };

            if (user == null)
            {
                authenticateResult.MessageCode        = "alerts:error.user_not_found";
                authenticateResult.MessageDescription = "User not found.";
            }
            else if (!user.Active)
            {
                authenticateResult.MessageCode        = "alerts:error.user_disabled";
                authenticateResult.MessageDescription = "The user is disabled.";
            }
            else if (!AuthenticationTypeEnabledForUser(user.AuthenticationType, generalSetting))
            {
                authenticateResult.MessageCode        = "alerts:error.authentication_type_disabled";
                authenticateResult.MessageDescription = "Authentication type disabled";
            }
            else
            {
                authenticateResult.CheckUserIsOk = true;
            }

            return(authenticateResult);
        }
        public JsonResult Set(GeneralSettingsApp setting)
        {
            var generalSettings = SettingHelper.ParseObjectToSettingDataBase(setting);

            using (var context = new AppDbContext())
            {
                var settingDataBase = context.GeneralSettings.ToArray();

                foreach (var item in generalSettings)
                {
                    if (item.SettingName == "SMTPCredentialsPassword")
                    {
                        var actualPassword = SettingHelper.Get(true).SMTPCredentialsPassword;

                        if (!UserChangedSMTPCredentialsPassword(item.ValueString, actualPassword))
                        {
                            continue;
                        }
                    }

                    var settingItem = settingDataBase.Single(x => x.SettingName == item.SettingName);
                    settingItem.ValueBool   = item.ValueBool;
                    settingItem.ValueInt    = item.ValueInt;
                    settingItem.ValueString = item.ValueString;
                }
                context.SaveChanges();
            }

            SettingHelper.RefreshCache();

            return(Json(setting, JsonRequestBehavior.AllowGet));
        }
示例#3
0
        public void ParseObjectToSettingDataBaseTest()
        {
            var settings = new GeneralSettingsApp
            {
                PasswordRequiredMinimumLength   = 3,
                PasswordRequireDigit            = false,
                PasswordRequireLowercase        = false,
                PasswordRequireUppercase        = false,
                PasswordRequireNonLetterOrDigit = false,
                PasswordHistoryLimit            = 3,

                AccessTokenExpireTimeSpanInMinutes   = 30,
                UserLockoutEnabledByDefault          = true,
                DefaultAccountLockoutTimeInMinutes   = 2,
                MaxFailedAccessAttemptsBeforeLockout = 4,

                AuthenticateDataBase        = true,
                AuthenticateActiveDirectory = true,

                ActiveDirectoryType   = ActiveDirectoryType.Server,
                ActiveDirectoryDomain = "itlab.local",
                ActiveDirectoryDN     = "dc=itlab,dc=local",

                SMTPDeliveryMethod          = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory,
                SMTPPickupDirectoryLocation = @"c:\temp\email"
            };

            var generalSettingsDataBase = SettingHelper.ParseObjectToSettingDataBase(settings);

            foreach (var item in settings.GetType().GetProperties())
            {
                var settingItem = generalSettingsDataBase.Where(x => x.SettingName == item.Name).SingleOrDefault();
                Assert.IsNotNull(settingItem);
            }
        }
示例#4
0
        public void AuthenticationTypeEnabledForUser_ActiveDirectoryDisabled()
        {
            var generalSeetings = new GeneralSettingsApp {
                AuthenticateActiveDirectory = false
            };

            Assert.AreEqual(false, ApplicationOAuthProvider.AuthenticationTypeEnabledForUser(AuthenticationType.ActiveDirectory, generalSeetings));
        }
示例#5
0
        public void AuthenticationTypeEnabledForUser_DataBaseDisabled()
        {
            var generalSeetings = new GeneralSettingsApp {
                AuthenticateDataBase = false
            };

            Assert.AreEqual(false, ApplicationOAuthProvider.AuthenticationTypeEnabledForUser(AuthenticationType.DataBase, generalSeetings));
        }
示例#6
0
        public void CheckUser_UserNotFound()
        {
            var generalSeetings = new GeneralSettingsApp();

            var authenticateResult = ApplicationOAuthProvider.CheckUser(null, "user.test", generalSeetings);

            Assert.AreEqual(false, authenticateResult.CheckUserIsOk);
            Assert.AreEqual("alerts:error.user_not_found", authenticateResult.MessageCode);
        }
示例#7
0
        public void CheckUser_UserDisabled()
        {
            User user = new User()
            {
                UserName = "******", Active = false
            };

            var generalSeetings = new GeneralSettingsApp();

            var authenticateResult = ApplicationOAuthProvider.CheckUser(user, user.UserName, generalSeetings);

            Assert.AreEqual(false, authenticateResult.CheckUserIsOk);
            Assert.AreEqual("alerts:error.user_disabled", authenticateResult.MessageCode);
        }
示例#8
0
        public void CheckUser_AuthenticateTypeActiveDirectoryEnabled()
        {
            User user = new User()
            {
                UserName = "******", Active = true, AuthenticationType = AuthenticationType.ActiveDirectory
            };

            var generalSeetings = new GeneralSettingsApp()
            {
                AuthenticateActiveDirectory = true
            };

            var authenticateResult = ApplicationOAuthProvider.CheckUser(user, user.UserName, generalSeetings);

            Assert.AreEqual(true, authenticateResult.CheckUserIsOk);
        }
示例#9
0
        public void CheckUser_AuthenticateTypeActiveDirectoryDisabled()
        {
            User user = new User()
            {
                UserName = "******", Active = true, AuthenticationType = AuthenticationType.ActiveDirectory
            };

            var generalSeetings = new GeneralSettingsApp()
            {
                AuthenticateActiveDirectory = false
            };

            var authenticateResult = ApplicationOAuthProvider.CheckUser(user, user.UserName, generalSeetings);

            Assert.AreEqual(false, authenticateResult.CheckUserIsOk);
            Assert.AreEqual("alerts:error.authentication_type_disabled", authenticateResult.MessageCode);
        }
示例#10
0
        private User ConfigUserTestPasswordExpire(int settingPasswordExpiresInDays, AuthenticationType authenticationType, DateTime creationDate, DateTime?lastPasswordChangeDate)
        {
            var settings = new GeneralSettingsApp
            {
                PasswordExpiresInDays = settingPasswordExpiresInDays
            };

            SettingHelper.AddInCache(settings);

            var user = new User
            {
                AuthenticationType      = authenticationType,
                CreationDate            = creationDate,
                LastPasswordChangedDate = lastPasswordChangeDate
            };

            return(user);
        }
示例#11
0
        private void SetGeneralSettings()
        {
            var settings = new GeneralSettingsApp
            {
                PasswordRequiredMinimumLength   = 3,
                PasswordRequireDigit            = true,
                PasswordRequireLowercase        = false,
                PasswordRequireUppercase        = false,
                PasswordRequireNonLetterOrDigit = false,
                PasswordHistoryLimit            = 3,
                PasswordExpiresInDays           = 365,

                AccessTokenExpireTimeSpanInMinutes   = 30,
                UserLockoutEnabledByDefault          = true,
                DefaultAccountLockoutTimeInMinutes   = 2,
                MaxFailedAccessAttemptsBeforeLockout = 4,

                AuthenticateDataBase        = true,
                AuthenticateActiveDirectory = false,

                ActiveDirectoryType   = ActiveDirectoryType.Server,
                ActiveDirectoryDomain = "itlab.local",
                ActiveDirectoryDN     = "dc=itlab,dc=local",

                SMTPDeliveryMethod          = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory,
                SMTPPickupDirectoryLocation = @"c:\temp\ITLab.TreinamentoWebAPI\email",
                SMTPDefaultFromAddress      = "*****@*****.**",

                LayoutSkin = "skin-grey",

                UploadDirectoryTemp = @"c:\temp\ITLab.TreinamentoWebAPI\UploadFileTemp"
            };

            var generalSettings = SettingHelper.ParseObjectToSettingDataBase(settings);

            foreach (var setting in generalSettings)
            {
                _context.GeneralSettings.Add(setting);
            }

            _context.SaveChanges();
        }
示例#12
0
        public void CheckAuthenticatedInDataBase_UserPasswordNotExpired()
        {
            var signInStatus       = Microsoft.AspNet.Identity.Owin.SignInStatus.Success;
            var AuthenticateResult = new AuthenticateResult();
            var settings           = new GeneralSettingsApp
            {
                PasswordExpiresInDays = 2
            };

            SettingHelper.AddInCache(settings);

            var user = new User()
            {
                AuthenticationType      = AuthenticationType.DataBase,
                LastPasswordChangedDate = DateTime.Now.Date.AddDays(-1)
            };

            var authenticateResult = ApplicationOAuthProvider.CheckAuthenticatedInDataBase(user, AuthenticateResult, signInStatus);

            Assert.AreEqual(true, authenticateResult.IsAuthenticated);
        }
示例#13
0
        public void CheckAuthenticatedInDataBase_UserPasswordExpired()
        {
            var signInStatus       = Microsoft.AspNet.Identity.Owin.SignInStatus.Success;
            var AuthenticateResult = new AuthenticateResult();
            var settings           = new GeneralSettingsApp {
                PasswordExpiresInDays = 1
            };

            SettingHelper.AddInCache(settings);

            var user = new User()
            {
                AuthenticationType      = AuthenticationType.DataBase,
                LastPasswordChangedDate = DateTime.Now.Date.AddDays(-(SettingHelper.Get().PasswordExpiresInDays + 1))
            };

            var authenticateResult = ApplicationOAuthProvider.CheckAuthenticatedInDataBase(user, AuthenticateResult, signInStatus);

            Assert.AreEqual(false, authenticateResult.IsAuthenticated);
            Assert.AreEqual("alerts:warning.user_password_expired", authenticateResult.MessageCode);
        }
示例#14
0
        public static bool AuthenticationTypeEnabledForUser(AuthenticationType userAuthenticationType, GeneralSettingsApp generalSettings)
        {
            var result = (userAuthenticationType == AuthenticationType.DataBase && generalSettings.AuthenticateDataBase) || (userAuthenticationType == AuthenticationType.ActiveDirectory && generalSettings.AuthenticateActiveDirectory);

            return(result);
        }
示例#15
0
 private static void HashSensitiveInformation(GeneralSettingsApp settings)
 {
     settings.SMTPCredentialsPassword = settings.SMTPCredentialsPassword.GetHash();
 }