コード例 #1
0
        public void Constructor_Should_ThrowInvalidOperationException_When_ProvideNullValue()
        {
            // Arrange
            const ADS_USER_FLAG invalid = (ADS_USER_FLAG)99;

            // Act and Assert

            Assert.Throws <InvalidOperationException>(
                () => _ = ActiveDirectoryCommonFilters.UserAccessControl(invalid));
        }
コード例 #2
0
        private static int SetAccountValueFlag(int originalValue, bool flag, ADS_USER_FLAG relativeFlag)
        {
            int result = originalValue;

            if (flag)
            {
                result |= (int)relativeFlag;
            }
            else
            {
                result &= ~(int)relativeFlag;
            }

            return(result);
        }
コード例 #3
0
        protected override bool ComparePropertyValue(IOguObject srcOguObject, string srcPropertyName, ADObjectWrapper adObject, string targetPropertyName, string context)
        {
            int userAccountControl = Convert.ToInt32(adObject.Properties[targetPropertyName]);

            ADS_USER_FLAG uacFlag = ADS_USER_FLAG.ADS_UF_NONE;

            bool result = true;

            if (Enum.TryParse(context, out uacFlag))
            {
                bool originalFlag = ((userAccountControl & (int)uacFlag) == (int)uacFlag);

                result = originalFlag == (bool)srcOguObject.Properties[srcPropertyName];
            }

            return(result);
        }
コード例 #4
0
        public void AdsUserFlagPropertyShouldConvertFromDirectoryValue()
        {
            // Fixture setup
            const ADS_USER_FLAG userFlag = ADS_USER_FLAG.ADS_UF_ACCOUNTDISABLE;

            var properties = Enumeration.GetAll <DirectoryProperty>()
                             .Where(p => p.Syntax == DirectoryPropertySyntax.Enumeration &&
                                    p.NotionalType.IsEquivalentTo(typeof(ADS_USER_FLAG)));

            // Exercise system
            var flags = properties
                        .Select(p => p.ConvertFromDirectoryValue((int)userFlag))
                        .ToList();

            // Verify outcome
            flags.Should().HaveCountGreaterThan(0);
            flags.ForEach(f => ((ADS_USER_FLAG)f).Should().Be(userFlag));
        }
コード例 #5
0
        private static void MergeUACValue(IOguObject srcOguObject, string srcPropertyName, DirectoryEntry entry, string targetPropertyName, string context)
        {
            int userAccountControl = Convert.ToInt32(entry.Properties[targetPropertyName].Value);

            ADS_USER_FLAG uacFlag = ADS_USER_FLAG.ADS_UF_NONE;

            if (Enum.TryParse(context, out uacFlag))
            {
                bool srcPropertyValue = (bool)srcOguObject.Properties[srcPropertyName];

                if (srcPropertyValue)
                {
                    userAccountControl = userAccountControl | (int)uacFlag;
                }
                else
                {
                    userAccountControl = userAccountControl & ~(int)(uacFlag);
                }
            }

            entry.Properties[targetPropertyName].Value = userAccountControl;
        }
コード例 #6
0
        /// <summary>
        /// Returns an LdapFilter for use with userAccountControl searches.
        /// </summary>
        /// <param name="uac">An ADS_USER_Flag enumeration.</param>
        /// <returns>LdapFilter for User Account Control Search.</returns>
        public static LdapFilter UserAccessControl(ADS_USER_FLAG uac)
        {
            switch (uac)
            {
            case ADS_USER_FLAG.SCRIPT:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=1"));

            case ADS_USER_FLAG.ACCOUNTDISABLE:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=2"));

            case ADS_USER_FLAG.HOMEDIR_REQUIRED:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=8"));

            case ADS_USER_FLAG.LOCKOUT:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=16"));

            case ADS_USER_FLAG.PASSWD_NOTREQD:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=32"));

            case ADS_USER_FLAG.PASSWD_CANT_CHANGE:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=64"));

            case ADS_USER_FLAG.ENCRYPTED_TEXT_PASSWORD_ALLOWED:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=128"));

            case ADS_USER_FLAG.TEMP_DUPLICATE_ACCOUNT:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=256"));

            case ADS_USER_FLAG.NORMAL_ACCOUNT:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=512"));

            case ADS_USER_FLAG.INTERDOMAIN_TRUST_ACCOUNT:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=2048"));

            case ADS_USER_FLAG.WORKSTATION_TRUST_ACCOUNT:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=4096"));

            case ADS_USER_FLAG.SERVER_TRUST_ACCOUNT:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=8192"));

            case ADS_USER_FLAG.DONT_EXPIRE_PASSWD:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=65536"));

            case ADS_USER_FLAG.MNS_LOGON_ACCOUNT:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=131072"));

            case ADS_USER_FLAG.SMARTCARD_REQUIRED:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=262144"));

            case ADS_USER_FLAG.TRUSTED_FOR_DELEGATION:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=524288"));

            case ADS_USER_FLAG.NOT_DELEGATED:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=1048576"));

            case ADS_USER_FLAG.USE_DES_KEY_ONLY:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=2097152"));

            case ADS_USER_FLAG.DONT_REQUIRE_PREAUTH:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=4194304"));

            case ADS_USER_FLAG.PASSWORD_EXPIRED:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=8388608"));

            case ADS_USER_FLAG.TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION:
                return(new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=16777216"));

            default:
                throw new InvalidOperationException("Invalid User Flag!");
            }
        }