private void DeleteAttribute(LdapConnection connection, string entryDn, string attributeName)
        {
            string         dn             = entryDn + "," + LdapConfiguration.Configuration.SearchDn;
            ModifyRequest  modifyRequest  = new ModifyRequest(dn, DirectoryAttributeOperation.Delete, attributeName);
            ModifyResponse modifyResponse = (ModifyResponse)connection.SendRequest(modifyRequest);

            Assert.Equal(ResultCode.Success, modifyResponse.ResultCode);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Make multiple changes to a particular Identity Manager service object/resource (async await)
        /// </summary>
        /// <param name="objectID">Resource ID for the object containing the attributes to be modified</param>
        /// <param name="changes">
        /// Set of changes (Multi-valued "Adds/Removes and Single-valued "Replaces" to be made for the single object
        /// </param>
        /// <returns>Task (async/await) of the asynchronous operation</returns>
        public async Task <Message> ChangeMultipleAttrbutes(string objectID, Change[] changes)
        {
            var modifyRequest = new ModifyRequest {
                Change = changes
            };

            return(await PutAsync(objectID, modifyRequest));
        }
Exemplo n.º 3
0
        public void DistinguishedName_Set_GetReturnsExpected()
        {
            var request = new ModifyRequest {
                DistinguishedName = "Name"
            };

            Assert.Equal("Name", request.DistinguishedName);
        }
Exemplo n.º 4
0
        public void RequestId_Set_GetReturnsExpected()
        {
            var request = new ModifyRequest {
                RequestId = "Id"
            };

            Assert.Equal("Id", request.RequestId);
        }
Exemplo n.º 5
0
        public void Ctor_Default()
        {
            var request = new ModifyRequest();

            Assert.Empty(request.Controls);
            Assert.Null(request.DistinguishedName);
            Assert.Empty(request.Modifications);
            Assert.Null(request.RequestId);
        }
        public ModifyResponse MakeModifyRequest(string distinguishedName, IEnumerable <DirectoryAttributeModification> modifications)
        {
            using (var connection = _connectionService.OpenConnection())
            {
                var request = new ModifyRequest(distinguishedName, modifications.ToArray());

                return((ModifyResponse)connection.SendRequest(request));
            }
        }
Exemplo n.º 7
0
        private async Task <Message> PutAttribute(string objectID, string attrName, string attrValue, ModeType modeType)
        {
            ModifyRequest modifyRequest         = new ModifyRequest();
            Change        changeRemoveAttribute = new Change(modeType, attrName, attrValue);

            modifyRequest.Change = new[] { changeRemoveAttribute };

            return(await PutAsync(objectID, modifyRequest));
        }
Exemplo n.º 8
0
        public void Ctor_DistinguishedString_Modifications(string distinguishedName, DirectoryAttributeModification[] modifications)
        {
            var request = new ModifyRequest(distinguishedName, modifications);

            Assert.Empty(request.Controls);
            Assert.Equal(distinguishedName, request.DistinguishedName);
            Assert.Equal(modifications ?? Enumerable.Empty <DirectoryAttributeModification>(), request.Modifications.Cast <DirectoryAttributeModification>());
            Assert.Null(request.RequestId);
        }
Exemplo n.º 9
0
        public bool SetUserAttribute(string uname, string attribute, string value)
        {
            string userDN = this.GetUserDN(uname);

            try
            {
                DirectoryAttributeModification mod = new DirectoryAttributeModification
                {
                    Name      = attribute,
                    Operation = DirectoryAttributeOperation.Replace
                };
                mod.Add(value);
                ModifyRequest req = new ModifyRequest(userDN);
                req.Modifications.Add(mod);
                m_conn.SendRequest(req);
            }
            catch (Exception e)
            {
                m_logger.FatalFormat("can't add attribute:{0} because of error:{1}", attribute, e.Message);
                return(false);
            }

            if (attribute.ToLower().Equals("sambapwdlastset"))
            {
                Dictionary <string, List <string> > SearchResult = GetUserAttribValue(userDN, "(objectClass=*)", SearchScope.Subtree, new string[] { "shadowMax", "sambaPwdMustChange" });

                if (SearchResult.ContainsKey("shadowmax") && SearchResult.ContainsKey("sambapwdmustchange"))
                {
                    int shadowMax = 0;

                    try
                    {
                        shadowMax = Convert.ToInt32(SearchResult["shadowmax"].First());
                    }
                    catch (Exception e)
                    {
                        m_logger.FatalFormat("SetUserAttribute: Unable to convert return from GetUserAttribValue to int {0}", e.Message);
                        return(false);
                    }

                    if (shadowMax > 0)
                    {
                        TimeMethod time = TimeMethod.methods[Methods.Timestamps];
                        string     t    = time.time(new TimeSpan(shadowMax, 0, 0, 0));
                        if (!t.Equals("0"))
                        {
                            if (!SetUserAttribute(uname, "sambaPwdMustChange", t))
                            {
                                return(false);
                            }
                        }
                    }
                }
            }
            return(true);
        }
Exemplo n.º 10
0
        public override DirectoryRequest[] GetUpdate()
        {
            var           result = base.GetUpdate();
            ModifyRequest mr     = (ModifyRequest)result[result.Length - 1];

            SetAttribute(mr.Modifications, OPERATIONID, OperationId.ToString());

            Changes.Clear();
            return(result);
        }
Exemplo n.º 11
0
        public IActionResult ModifyStudent(ModifyRequest request)
        {
            var student = _service.ModifyStudent(request);

            if (student != null)
            {
                return(Ok(student));
            }
            return(BadRequest("Nie znaleziono studenta"));
        }
Exemplo n.º 12
0
        public static void SetObjectSecurity(LdapConnection conn, string dn, System.DirectoryServices.ActiveDirectorySecurity sec, System.DirectoryServices.Protocols.SecurityMasks securityMask)
        {
            byte[] rawSD = sec.GetSecurityDescriptorBinaryForm();

            //get securityDescriptor
            ModifyRequest modRq = new ModifyRequest(dn, DirectoryAttributeOperation.Replace, "ntSecurityDescriptor", rawSD);

            modRq.Controls.Add(new SecurityDescriptorFlagControl(securityMask));
            ModifyResponse rsp = (ModifyResponse)conn.SendRequest(modRq);
        }
        public override DirectoryRequest[] GetUpdate()
        {
            var           result = base.GetUpdate();
            ModifyRequest mr     = (ModifyRequest)result[result.Length - 1];

            SetAttribute(mr.Modifications, LDAPQUERY, LdapQuery);

            Changes.Clear();
            return(result);
        }
Exemplo n.º 14
0
        public void Validate_Throws_ApiSerializationValidationException_When_Modifications_Is_Empty()
        {
            //Arrange
            var modReq = new ModifyRequest("foo", new List <ModificationItem>());

            //Act
            modReq.ToAdsml();

            //Assert
            Assert.Fail("Expected exception not thrown.");
        }
Exemplo n.º 15
0
        public override SyncResult OnModifyEntry(ExSearchResultEntry entry, SortedList <string, DirectoryAttribute> sourceAttributes)
        {
            ExTraceGlobals.SynchronizationJobTracer.TraceDebug <string>((long)this.GetHashCode(), "About to modify target from source DN {0}", entry.DistinguishedName);
            ModifyRequest modifyRequest = new ModifyRequest();

            modifyRequest.DistinguishedName = this.GetTargetPath(entry);
            this.SendRequest(this.AddAttributeModifications(entry, sourceAttributes, modifyRequest));
            this.logSession.LogEvent(EdgeSyncLoggingLevel.Medium, EdgeSyncEvent.TargetConnection, "Updated: " + entry.DistinguishedName, "Succcessfully Updated Entry");
            ExTraceGlobals.SynchronizationJobTracer.TraceDebug <string>((long)this.GetHashCode(), "Modified entry {0}", modifyRequest.DistinguishedName);
            return(SyncResult.Modified);
        }
Exemplo n.º 16
0
        /// <summary>
        /// This method shows how to modify an attribute.
        /// </summary>
        /// <param name="connection">An OPEN connection to LDAP server</param>
        /// <param name="oldUid">Old user UID</param>
        /// <param name="newUid">New user UID</param>
        public static void ChangeUserUid(LdapConnection connection, string oldUid, string newUid)
        {
            var oldDn = string.Format("uid={0},ou=users,dc=example,dc=com", oldUid);
            var newDn = string.Format("uid={0},ou=users,dc=example,dc=com", newUid);

            DirectoryRequest request = new ModifyDNRequest(oldDn, "ou=users,dc=example,dc=com", "uid=" + newUid);

            connection.SendRequest(request);

            request = new ModifyRequest(newDn, DirectoryAttributeOperation.Replace, "uid", new string[] { newUid });
            connection.SendRequest(request);
        }
Exemplo n.º 17
0
        public override DirectoryRequest[] GetUpdate()
        {
            var           result = base.GetUpdate();
            ModifyRequest mr     = (ModifyRequest)result[result.Length - 1];

            SetAttribute(mr.Modifications, BIZRULE, BizRule);
            SetAttribute(mr.Modifications, BIZRULELANGUAGE, BizRuleLanguage.ToString());
            SetAttribute(mr.Modifications, BIZRULEPATH, BizRuleImportedPath);

            Changes.Clear();
            return(result);
        }
Exemplo n.º 18
0
        public override DirectoryRequest[] GetUpdate()
        {
            ModifyRequest mr = new ModifyRequest();

            mr.DistinguishedName = Key;

            SetAttribute(mr.Modifications, DESCRIPTION, Description);
            SetAttribute(mr.Modifications, NameAttribute, Name);
            SetAttribute(mr.Modifications, VERSION, ApplicationVersion);

            return(new DirectoryRequest[] { mr });
        }
Exemplo n.º 19
0
        /// <inheritdoc/>
        public HttpRequestMessage CreateRequest(Nullable <bool> overrideGZipEnabled = null)
        {
            var    builder = CreateBuilder();
            var    request = builder.CreateRequest();
            object body    = GetBody();

            request.SetRequestSerailizedContent(service, body, overrideGZipEnabled.HasValue
                ? overrideGZipEnabled.Value : service.GZipEnabled);
            AddETag(request);
            ModifyRequest?.Invoke(request);
            return(request);
        }
        public ModifyResponse MakeModifyRequest(
            string distinguishedName,
            DirectoryAttributeOperation operation,
            string attributeName,
            params object[] attributeValues)
        {
            using (var connection = _connectionService.OpenConnection())
            {
                var request = new ModifyRequest(distinguishedName, operation, attributeName, attributeValues);

                return((ModifyResponse)connection.SendRequest(request));
            }
        }
Exemplo n.º 21
0
        public bool ModifyEntry(string dn, DirectoryAttributeModification[] attributes)
        {
            if (this.whatIf)
            {
                return(true);
            }

            var request = new ModifyRequest(dn, attributes);
            DirectoryResponse response = this.ldapConnection.SendRequest(request);

            ////var addResponse = response as AddResponse;
            return(response?.ResultCode == ResultCode.Success);
        }
Exemplo n.º 22
0
        public override void SetLease(LeaseToken newLeaseToken)
        {
            string        stringForm    = newLeaseToken.StringForm;
            ModifyRequest modifyRequest = new ModifyRequest();

            modifyRequest.DistinguishedName = this.serverDistinguishedName;
            DirectoryAttributeModification directoryAttributeModification = new DirectoryAttributeModification();

            directoryAttributeModification.Operation = DirectoryAttributeOperation.Replace;
            directoryAttributeModification.Name      = "msExchEdgeSyncLease";
            directoryAttributeModification.Add(stringForm);
            modifyRequest.Modifications.Add(directoryAttributeModification);
            this.SendRequest(modifyRequest);
        }
Exemplo n.º 23
0
        public void WriteSourceGuid(string absolutePath, byte[] guidValue)
        {
            DirectoryAttributeModification directoryAttributeModification = new DirectoryAttributeModification();

            directoryAttributeModification.Name      = "msExchEdgeSyncSourceGuid";
            directoryAttributeModification.Operation = DirectoryAttributeOperation.Replace;
            directoryAttributeModification.Add(guidValue);
            ModifyRequest request = new ModifyRequest(absolutePath, new DirectoryAttributeModification[]
            {
                directoryAttributeModification
            });

            this.SendRequest(request);
        }
Exemplo n.º 24
0
        public void Ctor_DistinguishedName_Operation_AttributeName_Values(string distinguishedName, DirectoryAttributeOperation operation, string attributeName, object[] values)
        {
            var request = new ModifyRequest(distinguishedName, operation, attributeName, values);

            Assert.Empty(request.Controls);
            DirectoryAttributeModification modification = (DirectoryAttributeModification)Assert.Single(request.Modifications);

            Assert.Equal(attributeName, modification.Name);
            Assert.Equal(operation, modification.Operation);
            Assert.Equal(values ?? Enumerable.Empty <object>(), modification.Cast <object>());

            Assert.Equal(distinguishedName, request.DistinguishedName);
            Assert.Null(request.RequestId);
        }
Exemplo n.º 25
0
 public void DeleteAttribut(String dn, String name, String value)
 {
     try
     {
         Connect2();
         DirectoryAttributeModification directoryAttributModification = new DirectoryAttributeModification();
         ModifyRequest  modRequest     = new ModifyRequest(dn, DirectoryAttributeOperation.Delete, name, new String[] { value });
         ModifyResponse modifyResponse = (ModifyResponse)ldapConnexion.SendRequest(modRequest);
     }
     catch (DirectoryOperationException e)
     {
         Console.WriteLine(e.Message);
         throw e;
     }
 }
Exemplo n.º 26
0
        public static void SetObjectSecurity(LdapConnection conn, string dn, System.DirectoryServices.ActiveDirectorySecurity sec, System.DirectoryServices.Protocols.SecurityMasks securityMask)
        {
            if (sec == null || conn == null || string.IsNullOrEmpty(dn))
            {
                throw new ArgumentNullException("Method does not accept null parameters");
            }

            byte[] rawSD = sec.GetSecurityDescriptorBinaryForm();

            //get securityDescriptor
            ModifyRequest modRq = new ModifyRequest(dn, DirectoryAttributeOperation.Replace, "ntSecurityDescriptor", rawSD);

            modRq.Controls.Add(new SecurityDescriptorFlagControl(securityMask));
            conn.SendRequest(modRq);
        }
Exemplo n.º 27
0
        public void Can_Generate_Api_Xml_With_LookupControls()
        {
            //Arrange
            string expected =
                new XElement("ModifyRequest",
                             new XAttribute("name", "/foo/bar"),
                             new XElement("ModificationItem",
                                          new XAttribute("operation", "addValue"),
                                          new XElement("AttributeDetails",
                                                       new XElement("StructureAttribute",
                                                                    new XAttribute("id", "31"),
                                                                    new XElement("StructureValue",
                                                                                 new XAttribute("langId", "10"),
                                                                                 new XAttribute("scope", "global"),
                                                                                 new XCData("foo"))))),
                             new XElement("LookupControls",
                                          new XElement("AttributesToReturn",
                                                       new XElement("Attribute",
                                                                    new XAttribute("name", "Artikelnummer"))),
                                          new XElement("LanguagesToReturn",
                                                       new XElement("Language",
                                                                    new XAttribute("id", "10"))))).ToString();

            var lookupBuilder = new LookupControlBuilder();

            lookupBuilder.ReturnAttributes(AttributeToReturn.WithName("Artikelnummer"))
            .ReturnLanguages(LanguageToReturn.WithLanguageId(10));

            //Act
            var modReq = new ModifyRequest("/foo/bar", new List <ModificationItem> {
                ModificationItem.New(
                    Modifications.AddValue,
                    StructureAttribute.New(31, new StructureValue(10, "foo"))
                    )
            })
            {
                LookupControl = lookupBuilder.Build()
            };

            var actual  = modReq.ToAdsml();
            var request = new BatchRequest(modReq);

            Console.WriteLine(actual.ToString());

            //Assert
            Assert.That(actual.ToString(), Is.EqualTo(expected));
            Assert.DoesNotThrow(() => request.ToAdsml().ValidateAdsmlDocument("adsml.xsd"));
        }
        internal void UpdateMembership(ADUser[] addedMembers, ADUser[] removedMembers)
        {
            if (addedMembers.IsNullOrEmpty <ADUser>() && removedMembers.IsNullOrEmpty <ADUser>())
            {
                return;
            }
            ModifyRequest modifyRequest = new ModifyRequest
            {
                DistinguishedName = this.groupMailbox.Id.DistinguishedName
            };

            modifyRequest.Controls.Add(new PermissiveModifyControl());
            this.PopulateModifyRequest(modifyRequest, IUnifiedGroupMailboxSchema.UnifiedGroupMembersLink.LdapDisplayName, DirectoryAttributeOperation.Delete, removedMembers);
            this.PopulateModifyRequest(modifyRequest, IUnifiedGroupMailboxSchema.UnifiedGroupMembersLink.LdapDisplayName, DirectoryAttributeOperation.Add, addedMembers);
            this.ReadWriteADSession.UnsafeExecuteModificationRequest(modifyRequest, this.groupMailbox.Id);
        }
Exemplo n.º 29
0
        public void ModifyPasswordRequest()
        {
            ModifyRequest req = LdapRequestBuilder.GetModifyPasswordRequest(_testUser, "new pwd");

            Assert.AreEqual(UserDn, req.DistinguishedName);

            var attributeModification = new DirectoryAttributeModification
            {
                Operation = DirectoryAttributeOperation.Replace,
                Name      = "userPassword",
            };

            attributeModification.Add("new pwd");

            CollectionAssert.AreEqual(req.Modifications[0], attributeModification);
        }
Exemplo n.º 30
0
        public void Validate_Throws_ApiSerializationValidationException_When_Context_Is_Empty()
        {
            //Arrange
            var modReq = new ModifyRequest(string.Empty, new List <ModificationItem> {
                ModificationItem.New(
                    Modifications.AddValue,
                    StructureAttribute.New(31, new StructureValue(10, "foo"))
                    )
            });

            //Act
            modReq.ToAdsml();

            //Assert
            Assert.Fail("Expected exception not thrown.");
        }
        /// <summary>
        /// Creates a ModifyRequest packet.
        /// </summary>
        /// <param name="context">The user context which contains message ID.</param>
        /// <param name="objectDn">The DN of object to be modified.</param>
        /// <param name="modificationList">Modification list of attributes.</param>
        /// <returns>The packet that contains the request.</returns>
        internal override AdtsModifyRequestPacket CreateModifyRequest(
            AdtsLdapContext context,
            string objectDn,
            params MsLdap.DirectoryAttributeModification[] modificationList)
        {
            int length = (modificationList != null) ? modificationList.Length : 0;

            ModifyRequest_modification_element[] modificationElements = new ModifyRequest_modification_element[length];
            for (int i = 0; i < length; i++)
            {
                byte[][] values = (byte[][])modificationList[i].GetValues(typeof(byte[]));

                modificationElements[i] = new ModifyRequest_modification_element(
                    new ModifyRequest_modification_element_operation((long)modificationList[i].Operation),
                    new AttributeTypeAndValues(
                        new AttributeDescription(modificationList[i].Name),
                        CreateAttributeValueSet(values)));
            }

            Asn1SequenceOf<ModifyRequest_modification_element> modificationSequence =
                new Asn1SequenceOf<ModifyRequest_modification_element>(modificationElements);

            ModifyRequest modifyRequest = new ModifyRequest(
                new LDAPDN(objectDn ?? string.Empty),
                modificationSequence);

            LDAPMessage_protocolOp operation = new LDAPMessage_protocolOp();
            operation.SetData(LDAPMessage_protocolOp.modifyRequest, modifyRequest);

            LDAPMessage message = new LDAPMessage(new MessageID(context.MessageId), operation, null);
            AdtsModifyRequestPacket packet = new AdtsModifyRequestPacket();
            packet.ldapMessagev3 = message;
            packet.messageId = context.MessageId;

            return packet;
        }