Beispiel #1
0
        private LdapState BaseLdapSearch(IList <string> otherReturnedAttributes, out IList <ILdapUser> searchResult, string searchFilter)
        {
            searchResult            = new List <ILdapUser>();
            otherReturnedAttributes = otherReturnedAttributes == null?_baseAttributes.ToList() : _baseAttributes.Union(otherReturnedAttributes).ToList();

            try
            {
                searchResult = LdapUserUtils.ConvertToLdapUsers((SearchResponse)_ldapConnection.SendRequest(
                                                                    LdapRequestBuilder.GetSearchUserRequest(_configRepository.GetSearchBaseDn(),
                                                                                                            searchFilter, otherReturnedAttributes
                                                                                                            )));
            }
            catch (Exception e)
            {
                _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapSearchUserError));
                return(LdapState.LdapSearchUserError);
            }
            if (searchResult.Count == 0)
            {
                _logger.Write(_logger.BuildLogMessage("Search Operation with NO RESULTS", LdapState.LdapSearchUserError));
                return(LdapState.LdapSearchUserError);
            }
            _logger.Write(_logger.BuildLogMessage("Search Operation Success", LdapState.LdapUserManipulatorSuccess));
            return(LdapState.LdapUserManipulatorSuccess);
        }
Beispiel #2
0
        public LdapState SearchUsers(IList <string> otherReturnedAttributes, string[] searchedUsers, out IList <ILdapUser> searchResult)
        {
            searchResult            = new List <ILdapUser>();
            otherReturnedAttributes = otherReturnedAttributes == null?_baseAttributes.ToList() : _baseAttributes.Union(otherReturnedAttributes).ToList();

            try
            {
                //Foreach all the credential,for everyone do the search and add user results to the out parameter
                searchResult = searchedUsers.Select(
                    users =>
                    (SearchResponse)_ldapConnection.SendRequest(
                        LdapRequestBuilder.GetSearchUserRequest(_configRepository.GetSearchBaseDn(),
                                                                LdapFilterBuilder.GetSearchFilter(_configRepository.GetUserObjectClass(),
                                                                                                  _configRepository.GetMatchFieldName(), users), otherReturnedAttributes)
                        ))
                               .Aggregate(searchResult,
                                          (current, searchReturn) =>
                                          current.Concat(LdapUserUtils.ConvertToLdapUsers(searchReturn)).ToList());
            }
            catch (Exception e)
            {
                _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapSearchUserError));
                return(LdapState.LdapSearchUserError);
            }

            if (searchResult.Count == 0)
            {
                _logger.Write(_logger.BuildLogMessage("Search Operation with NO RESULTS", LdapState.LdapSearchUserError));
                return(LdapState.LdapSearchUserError);
            }
            _logger.Write(_logger.BuildLogMessage("Search Operation Success", LdapState.LdapUserManipulatorSuccess));
            return(LdapState.LdapUserManipulatorSuccess);
        }
Beispiel #3
0
 /// <summary>
 ///     Delete an LDAPUser
 /// </summary>
 /// <param name="user">User to delete</param>
 /// <returns>Success or Failed</returns>
 public LdapState DeleteUser(ILdapUser user)
 {
     try
     {
         _ldapConnection.SendRequest(LdapRequestBuilder.GetDeleteRequest(user));
     }
     catch (Exception e)
     {
         _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapDeleteUserError));
         return(LdapState.LdapDeleteUserError);
     }
     _logger.Write(_logger.BuildLogMessage("Delete User Operation Success", LdapState.LdapUserManipulatorSuccess));
     return(LdapState.LdapUserManipulatorSuccess);
 }
Beispiel #4
0
        public void SearchRequest()
        {
            string       ldapSearchFilter = String.Format("(&(objectClass={0})({1}={2}))", ObjectClass, "cn", UserCn);
            const string baseDn           = "o=ApexNet,ou=People,dc=maxcrc,dc=com";
            var          attributes       = new List <string> {
                "cn", "sn"
            };

            SearchRequest req = LdapRequestBuilder.GetSearchUserRequest(baseDn, ldapSearchFilter, attributes);

            Assert.AreEqual(baseDn, req.DistinguishedName);
            Assert.AreEqual(ldapSearchFilter, req.Filter);
            Assert.AreEqual(SearchScope.Subtree, req.Scope);
            CollectionAssert.AreEqual(attributes, req.Attributes);
        }
Beispiel #5
0
        public void AddRequest()
        {
            AddRequest req = LdapRequestBuilder.GetAddRequest(_testUser, ObjectClass);

            Assert.AreEqual(UserDn, req.DistinguishedName);

            Assert.IsTrue(req.Attributes.Count == 5);

            //POCHO
            CollectionAssert.AreEqual(req.Attributes[0], new DirectoryAttribute("objectClass", ObjectClass));
            CollectionAssert.AreEqual(req.Attributes[1], new DirectoryAttribute("cn", UserCn));
            CollectionAssert.AreEqual(req.Attributes[2], new DirectoryAttribute("sn", "test"));
            CollectionAssert.AreEqual(req.Attributes[3], new DirectoryAttribute("userPassword", UserPwd));
            CollectionAssert.AreEqual(req.Attributes[4], new DirectoryAttribute("description", "Test Description"));
        }
Beispiel #6
0
 /// <summary>
 ///     Create a new LDAPUser
 /// </summary>
 /// <param name="newUser">User to create</param>
 /// <returns> Success or Failed</returns>
 public LdapState CreateUser(ILdapUser newUser)
 {
     try
     {
         _ldapConnection.SendRequest(LdapRequestBuilder.GetAddRequest(newUser,
                                                                      _configRepository.GetUserObjectClass()));
     }
     catch (Exception e)
     {
         _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapCreateUserError));
         return(LdapState.LdapCreateUserError);
     }
     _logger.Write(_logger.BuildLogMessage("Create User Operation Success", LdapState.LdapUserManipulatorSuccess));
     return(LdapState.LdapUserManipulatorSuccess);
 }
Beispiel #7
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);
        }
Beispiel #8
0
        public void ModifyRequest()
        {
            ModifyRequest req = LdapRequestBuilder.GetModifyRequest(_testUser, DirectoryAttributeOperation.Replace,
                                                                    "description",
                                                                    "Test Description 2");

            Assert.AreEqual(UserDn, req.DistinguishedName);

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

            attributeModification.Add("Test Description 2");

            CollectionAssert.AreEqual(req.Modifications[0], attributeModification);
        }
Beispiel #9
0
        /// <summary>
        ///     Change an LDAPUser's Password
        /// </summary>
        /// <param name="user">LDAPUser to change the password</param>
        /// <param name="newPwd">New Passowrd</param>
        /// <returns>Success or Failed</returns>
        public LdapState ChangeUserPassword(ILdapUser user, string newPwd)
        {
            try
            {
                _ldapConnection.SendRequest(LdapRequestBuilder.GetModifyPasswordRequest(user, newPwd));
            }
            catch (Exception e)
            {
                _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapChangeUserPasswordError));
                return(LdapState.LdapChangeUserPasswordError);
            }

            user.OverwriteUserAttribute("userPassword", newPwd);

            _logger.Write(_logger.BuildLogMessage("Change Password Operation Success",
                                                  LdapState.LdapUserManipulatorSuccess));
            return(LdapState.LdapUserManipulatorSuccess);
        }
Beispiel #10
0
        /// <summary>
        ///     Modify an LDAPUser Attribute
        /// </summary>
        /// <param name="operationType">Operation to execute on the attribute</param>
        /// <param name="user">LDAPUser's Attribute</param>
        /// <param name="attributeName">Attribute name</param>
        /// <param name="attributeValue">Attribute Value</param>
        /// <returns>Success or Failed</returns>
        public LdapState ModifyUserAttribute(DirectoryAttributeOperation operationType, ILdapUser user,
                                             string attributeName,
                                             string attributeValue)
        {
            try
            {
                _ldapConnection.SendRequest(LdapRequestBuilder.GetModifyRequest(user, operationType, attributeName,
                                                                                attributeValue));
            }
            catch (Exception e)
            {
                _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapModifyUserAttributeError));
                return(LdapState.LdapModifyUserAttributeError);
            }

            user.GetUserOperation(operationType, attributeName, attributeValue)();

            _logger.Write(_logger.BuildLogMessage("Modify User Attribute Operation Success",
                                                  LdapState.LdapUserManipulatorSuccess));
            return(LdapState.LdapUserManipulatorSuccess);
        }
Beispiel #11
0
        public void DeleteRequest()
        {
            DeleteRequest req = LdapRequestBuilder.GetDeleteRequest(_testUser);

            Assert.AreEqual(UserDn, req.DistinguishedName);
        }