public void DRSR_DRSVerifyNames_Verify_Dsnames()
        {
            DrsrTestChecker.Check();
            // Init the data.
            EnvironmentConfig.Machine srv = EnvironmentConfig.Machine.WritableDC1;
            DsServer server = (DsServer)EnvironmentConfig.MachineStore[srv];

            uint ret = 0;

            ret = drsTestClient.DrsBind(
                srv,
                EnvironmentConfig.User.ParentDomainAdmin,
                DRS_EXTENSIONS_IN_FLAGS.DRS_EXT_BASE
                );

            BaseTestSite.Assert.AreEqual <uint>(0, ret,
                                                "IDL_DRSBind: Checking return value - got: {0}, expect: {1}, return value should always be 0 with a success bind to DC",
                                                ret, 0);

            // Create a DSNAME
            string dn     = server.Site.DN;
            DSNAME dsSite = ldapAdapter.GetDsName(server, dn).Value;

            // Prefix table
            SCHEMA_PREFIX_TABLE prefixTable = OIDUtility.CreatePrefixTable();

            // Create the attribute block. Here we go to RDN attribute.
            string rdnAttrId = DRSConstants.RDN_OID;
            uint   attrTyp   = OIDUtility.MakeAttid(prefixTable, rdnAttrId);

            ATTRVAL      attrVal      = DrsuapiClient.CreateATTRVAL(null);
            ATTRVALBLOCK attrValBlock = DrsuapiClient.CreateATTRVALBLOCK(new ATTRVAL[] { attrVal });
            ATTR         attr         = DrsuapiClient.CreateATTR(attrTyp, attrValBlock);
            ATTRBLOCK    attrBlock    = DrsuapiClient.CreateATTRBLOCK(new ATTR[] { attr });

            // Actual RPC call.
            ret = drsTestClient.DrsVerifyNames(
                srv,
                dwInVersion_Values.V1,
                DRS_MSG_VERIFYREQ_V1_dwFlags_Values.DRS_VERIFY_DSNAMES,
                new DSNAME[] { dsSite },
                new string[] { dn },
                attrBlock,
                prefixTable
                );

            BaseTestSite.Assert.AreEqual <uint>(0, ret,
                                                "IDL_DRSVerifyNames: Checking return value - got: {0}, expect: {1}, return value should always be 0",
                                                ret, 0);
            // Unbind
            ret = drsTestClient.DrsUnbind(srv);
            BaseTestSite.Assert.AreEqual <uint>(0, ret,
                                                "IDL_DRSUnbind: Checking return value - got: {0}, expect: {1}, return value should always be 0",
                                                ret, 0);
        }
Beispiel #2
0
        public DRS_MSG_VERIFYREQ CreateDrsVerifyNamesV1Request()
        {
            DRS_MSG_VERIFYREQ req = new DRS_MSG_VERIFYREQ();

            req.V1               = new DRS_MSG_VERIFYREQ_V1();
            req.V1.dwFlags       = 0;
            req.V1.cNames        = 1;
            req.V1.rpNames       = new DSNAME[1][];
            req.V1.rpNames[0]    = new DSNAME[] { DrsuapiClient.CreateDsName(null, Guid.Empty, null) };
            req.V1.RequiredAttrs = DrsuapiClient.CreateATTRBLOCK(null);
            req.V1.PrefixTable   = OIDUtility.CreatePrefixTable();

            return(req);
        }
        public static uint attrTyp(DsServer dc, string attrName)
        {
            RootDSE             rootDse     = LdapUtility.GetRootDSE(dc);
            SCHEMA_PREFIX_TABLE prefixTable = OIDUtility.CreatePrefixTable();
            string attrOid = GetAttributeValueInString(
                dc,
                rootDse.schemaNamingContext,
                "attributeID",
                "(lDAPDisplayName=" + attrName + ")",
                System.DirectoryServices.Protocols.SearchScope.OneLevel
                );


            uint attrTyp = OIDUtility.MakeAttid(prefixTable, attrOid);

            return(attrTyp);
        }
Beispiel #4
0
        // Helper functions

        string GetLdapDisplayName(DsServer dc, uint attrType, SCHEMA_PREFIX_TABLE prefixTable)
        {
            // translate the attrType to OID
            string oid = OIDUtility.OidFromAttrid(prefixTable, attrType);

            // get the lDAPDisplayName of the attribute

            // schema nc
            string schemaNc = LdapUtility.GetDnFromNcType(dc, NamingContext.SchemaNC);

            return(ldapAdapter.GetAttributeValueInString(
                       dc,
                       schemaNc,
                       "lDAPDisplayName",
                       "(attributeID=" + oid + ")",
                       SearchScope.OneLevel
                       ));
        }
Beispiel #5
0
        public DRS_MSG_GETCHGREQ CreateDrsGetNcChangesV8Request()
        {
            DRS_MSG_GETCHGREQ req = new DRS_MSG_GETCHGREQ();

            req.V8 = new DRS_MSG_GETCHGREQ_V8();
            req.V8.uuidDsaObjDest   = Guid.Empty;
            req.V8.uuidInvocIdSrc   = Guid.Empty;
            req.V8.pNC              = DrsuapiClient.CreateDsName(null, Guid.Empty, null);
            req.V8.usnvecFrom       = new USN_VECTOR();
            req.V8.pUpToDateVecDest = new UPTODATE_VECTOR_V1_EXT[1];
            req.V8.pUpToDateVecDest[0].dwVersion   = UPTODATE_VECTOR_V1_EXT_dwVersion_Values.V1;
            req.V8.pUpToDateVecDest[0].cNumCursors = 1;
            req.V8.pUpToDateVecDest[0].rgCursors   = new UPTODATE_CURSOR_V1[1];
            req.V8.pPartialAttrSet   = null;
            req.V8.pPartialAttrSetEx = null;
            req.V8.PrefixTableDest   = OIDUtility.CreatePrefixTable();

            return(req);
        }
Beispiel #6
0
        public static string GetObjectStringSid(DsServer srv, string dn)
        {
            object d = GetAttributeValue(srv, dn, "objectSid");

            if (d == null)
            {
                return(null);
            }
            byte[] data = null;
            if (d is string)
            {
                data = OIDUtility.ToBinary((string)d);
            }
            else if (d is byte[])
            {
                data = (byte[])d;
            }

            SecurityIdentifier sid = new SecurityIdentifier(data, 0);

            return(sid.ToString());
        }
        public void DRSR_DRSVerifyNames_Verify_SAM_Account_Names()
        {
            DrsrTestChecker.Check();
            // Init the data.
            EnvironmentConfig.Machine srv = EnvironmentConfig.Machine.WritableDC1;
            DsServer server = (DsServer)EnvironmentConfig.MachineStore[srv];
            DsUser   user   = EnvironmentConfig.UserStore[EnvironmentConfig.User.ParentDomainAdmin];

            uint ret = 0;

            ret = drsTestClient.DrsBind(
                srv,
                EnvironmentConfig.User.ParentDomainAdmin,
                DRS_EXTENSIONS_IN_FLAGS.DRS_EXT_BASE
                );

            BaseTestSite.Assert.AreEqual <uint>(
                0,
                ret,
                "IDL_DRSBind: should return 0 with a success bind to DC");

            // Create a DSNAME with only SAMAccountName.
            string userDn         = ldapAdapter.GetUserDn(server, user);
            string sAMAccountName = (string)ldapAdapter.GetAttributeValue(server, userDn, "sAMAccountName");
            DSNAME dsUser         = DrsuapiClient.CreateDsName(sAMAccountName, Guid.Empty, null);

            // Prefix table
            SCHEMA_PREFIX_TABLE prefixTable = OIDUtility.CreatePrefixTable();

            // Create the attribute block. Here we go to RDN attribute.
            string rdnAttrId = DRSConstants.RDN_OID;
            uint   attrTyp   = OIDUtility.MakeAttid(prefixTable, rdnAttrId);

            ATTRVAL      attrVal      = DrsuapiClient.CreateATTRVAL(null);
            ATTRVALBLOCK attrValBlock = DrsuapiClient.CreateATTRVALBLOCK(new ATTRVAL[] { attrVal });
            ATTR         attr         = DrsuapiClient.CreateATTR(attrTyp, attrValBlock);
            ATTRBLOCK    attrBlock    = DrsuapiClient.CreateATTRBLOCK(new ATTR[] { attr });

            // Actual RPC call.
            ret = drsTestClient.DrsVerifyNames(
                srv,
                dwInVersion_Values.V1,
                DRS_MSG_VERIFYREQ_V1_dwFlags_Values.DRS_VERIFY_SAM_ACCOUNT_NAMES,
                new DSNAME[] { dsUser },
                new string[] { userDn },
                attrBlock,
                prefixTable
                );

            BaseTestSite.Assert.AreEqual <uint>(
                0,
                ret,
                "IDL_DRSVerifyNames: return value should be 0"
                );

            // Unbind
            ret = drsTestClient.DrsUnbind(srv);
            BaseTestSite.Assert.AreEqual <uint>(
                0,
                ret,
                "IDL_DRSUnbind: return value should be 0");
        }