/// <summary> /// Add user /// </summary> /// <param name="user"></param> /// <param name="password"></param> public virtual void AddUser(TUser user, string password) { var dn = $"CN={user.FirstName} {user.LastName},{_ldapSettings.ContainerName}"; var attributeSet = new LdapAttributeSet { new LdapAttribute("instanceType", "4"), new LdapAttribute("objectCategory", $"CN=Person,CN=Schema,CN=Configuration,{_ldapSettings.DomainDistinguishedName}"), new LdapAttribute("objectClass", new[] { "top", "person", "organizationalPerson", "user" }), new LdapAttribute("name", user.Name), new LdapAttribute("cn", $"{user.FirstName} {user.LastName}"), new LdapAttribute("sAMAccountName", user.Name), new LdapAttribute("userPrincipalName", user.Name), new LdapAttribute("unicodePwd", Convert.ToBase64String(Encoding.Unicode.GetBytes($"\"{password}\""))), new LdapAttribute("userAccountControl", user.MustChangePasswordOnNextLogon ? "544" : "512"), new LdapAttribute("givenName", user.FirstName), new LdapAttribute("sn", user.LastName), new LdapAttribute("mail", user.EmailAddress) }; if (user.DisplayName != null) { attributeSet.Add(new LdapAttribute("displayName", user.DisplayName)); } if (user.Description != null) { attributeSet.Add(new LdapAttribute("description", user.Description)); } if (user.Phone != null) { attributeSet.Add(new LdapAttribute("telephoneNumber", user.Phone)); } if (user.Address?.Street != null) { attributeSet.Add(new LdapAttribute("streetAddress", user.Address.Street)); } if (user.Address?.City != null) { attributeSet.Add(new LdapAttribute("l", user.Address.City)); } if (user.Address?.PostalCode != null) { attributeSet.Add(new LdapAttribute("postalCode", user.Address.PostalCode)); } if (user.Address?.StateName != null) { attributeSet.Add(new LdapAttribute("st", user.Address.StateName)); } if (user.Address?.CountryName != null) { attributeSet.Add(new LdapAttribute("co", user.Address.CountryName)); } if (user.Address?.CountryCode != null) { attributeSet.Add(new LdapAttribute("c", user.Address.CountryCode)); } var newEntry = new Novell.Directory.Ldap.LdapEntry(dn, attributeSet); using (var ldapConnection = GetConnection()) { ldapConnection.Add(newEntry); } }