1

I am trying to use directory services to add a directory entry to an openldap server. The examples I have seen look pretty simple, but I keep getting the error "There is an naming violation". What does this message mean? How do I resolve it?

I have included the code, ldif file used to create the person container.

Public Function Ldap_Store_Manual_Registration(ByVal userName As String, ByVal firstMiddleName As String, ByVal lastName As String, ByVal password As String)

   Dim entry As DirectoryEntry = OpenLDAPconnection()  'OpenLDAPconnection() is DirectoryEntry(domainName, userId, password, AuthenticationTypes.SecureSocketsLayer) )

   Dim newUser As DirectoryEntry

   newUser = entry.Children.Add("ou=alumni", "organizationalUnit") 'also try with newUser = entry.Children.Add("ou=alumni,o=xxxx", "organizationalUnit") , also not working

   SetADProperty(newUser, "objectClass", "organizationalPerson") 
   SetADProperty(newUser, "objectClass", "person") 
   SetADProperty(newUser, "cn", userName)
   SetADProperty(newUser, "sn", userName)

   newUser.CommitChanges()
End Function

Public Shared Sub SetADProperty(ByVal de As DirectoryEntry, _
    ByVal pName As String, ByVal pValue As String)

    'First make sure the property value isnt "nothing"

    If Not pValue Is Nothing Then

        'Check to see if the DirectoryEntry contains this property already
        If de.Properties.Contains(pName) Then 'The DE contains this property

            'Update the properties value
            de.Properties(pName)(0) = pValue

        Else    'Property doesnt exist

            'Add the property and set it's value
            de.Properties(pName).Add(pValue)

        End If

    End If

End Sub

The ldif file:

version: 1

dn: cn=test3,ou=alumni,o=unimelb

objectClass: organizationalPerson

objectClass: person

objectClass: top

cn: test3

sn: test3 
1
  • Please edit your questions to make the code more readable. You can look at the formatting faq if you don't know how to do it. Commented Sep 19, 2008 at 6:02

2 Answers 2

1

Maybe you need to include this?

SetADProperty(newUser, "objectClass", "top")

Also, check what the required fields for organizationalPerson and person are...you might be missing one.

Sign up to request clarification or add additional context in comments.

Comments

0

Try:

Dim entry As New DirectoryEntry("LDAP://ou=alumni", etc.)
newUser = entry.Children.Add("cn=" + userName, "user")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.