directory-api mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Czesław Szczotka <cszczot...@gmail.com>
Subject How to change from the code the userPassword attribute
Date Tue, 10 Sep 2019 10:50:21 GMT
Hi,
I have users in my ApacheDS. I would like to modify userPassword attribute
( for inetOrgPerson entity in ApacheDS)  from C# code.
Below is my code snippet:
 public static string ChangePassword20(string adminUser, string
adminPassword, string container, string domainController, string userName,
string newPassword)
{
            const AuthenticationTypes authenticationTypes =
 AuthenticationTypes.ServerBind;

            DirectoryEntry searchRoot = null;
            DirectorySearcher searcher = null;
            DirectoryEntry userEntry = null;

            try
            {
                searchRoot = new
DirectoryEntry(String.Format("LDAP://{0}/{1}", domainController, container),
                    adminUser, adminPassword, authenticationTypes);

                searcher = new DirectorySearcher(searchRoot);
                searcher.Filter = String.Format("userid={0}", userName);
                searcher.SearchScope =
System.DirectoryServices.SearchScope.Subtree;
                searcher.CacheResults = false;

                SearchResult searchResult = searcher.FindOne(); ;
                if (searchResult == null) return "User Not Found In This
Domain";

                userEntry = searchResult.GetDirectoryEntry();

                //userEntry.InvokeSet("userPassword", new object[] {
Encoding.UTF8.GetBytes( newPassword ) });
                userEntry.Invoke("userPassword", new object[] { newPassword
});
                userEntry.CommitChanges();

                return "New password set";
            }
            catch (Exception ex)
            {
                 Console.WriteLine(ex.ToString());
                retrun "Error";
            }
            finally
            {
                if (userEntry != null) userEntry.Dispose();
                if (searcher != null) searcher.Dispose();
                if (searchRoot != null) searchRoot.Dispose();
            }

}

I'm getting such error:
CONSTRAINT_VIOLATION: failed for MessageType : MODIFY_REQUEST
Message ID : 10
    Modify Request
        Object : 'userid=test1,ou=users,dc=service,dc=...'
            Modification[0]
                Operation :  replace
                Mod

This code works when I try to modify other attributes like mail. Do you
know what can be wrong ? Maybe you have some example in other code like
java how to do this.
Thanks,
Czeslaw

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message