[OpenLdap+.NET]Probleem met organization+dcObject

Pagina: 1
Acties:

  • denyos
  • Registratie: Februari 2004
  • Laatst online: 16:49
Ik zit met het volgende probleem.
In asp.net ben ik bezig met het maken van een beheermodule voor onze ldapserver.
De boom van de ldap begint met het domein, en daarin komen klanten van ons te hangen.
|-nl
|--bedrijf
|---klantnaam
|---nogeenklantnaam

Deze klanten zijn van het ldap type "organization" EN dcObject.
Mijn probleem hierbij is hoe ik dit in code aanpak.
Hieronder staat wat ik heb geprobeerd en waarom.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DirectoryEntry directoryEntry = new DirectoryEntry();
directoryEntry.Path = "LDAP://" + _ldapServer + "/ou=Sites, " + _startPath;
directoryEntry.Username = _ldapUsername;
directoryEntry.Password = _ldapPassword;
directoryEntry.AuthenticationType = AuthenticationTypes.None; //default voor OpenLdap

DirectorySearcher searcher = new DirectorySearcher(directoryEntry);
searcher.Filter = "(objectclass=dcObject)";
searcher.SearchScope = SearchScope.OneLevel;
SearchResult result = searcher.FindOne();
if (result != null)
{
    DirectoryEntry newEntry = directoryEntry.Children.Add("o=Testbedrijf", "organization");
           
    newEntry.Properties["o"].Add("Testbedrijf");
    newEntry.CommitChanges();

    newEntry.Properties["objectClass"].Add("dcObject");
    newEntry.Properties["dc"].Add("Testbedrijf");
    newEntry.CommitChanges();
}


Wat ik hierbij als idee had was dat ik eerst het basis object moest maken. Dat is organization, dit is een structural object dus die zou eerst moeten (althans, dat idee heb ik). Vervolgens probeer ik de objectClass dcObject toe tevoegen wat als verplichte veld dc heeft.

Als ik deze code run, dan klap ik er uit op de onderste CommitChanges().
De foutmelding die ik krijg is "De gevraagde bewerking voldoet niet aan een of meer beperkingen die zijn verbonden met de klasse van het object. (Exception from HRESULT: 0x80072014)".

Hier kan ik mij enigzins in vinden, want als ik de propertie dc probeer te zetten bestaat die nog niet als de objectClass nog niet is toegevoegd. Maar als ik zonder de propertie dc probeer om de objectClass dcObject toe te voegen, dan is het verplichte veld niet gezet.

Mijn virtuele ldapserver voor het ontwikkelen beheer ik met phpldapadmin waarin ik wel gewoon de objectClass kan toevoegen, en vervolgens de verplichte velden moet toevoegen. Dit sterkt mij in het vermoeden dat wat ik doe niet onmogelijk is.

Hopelijk kan iemand mij een zetje de goede kant opgeven.

[ Voor 0% gewijzigd door denyos op 12-02-2009 14:20 . Reden: indents in code ]

Strava


Acties:
  • 0 Henk 'm!

  • denyos
  • Registratie: Februari 2004
  • Laatst online: 16:49
Helaas heeft er niemand een oplossing weten aan te dragen. Maar dankzij een wijziging in het ldapschema die door een andere afdeling is doorgevoerd is het probleem voor mij voorlopig uit de weg geruimd. Mocht iemand nog wel een oplossing hebben dan zie ik die natuurlijk graag, want ik sluit niet uit dat ik in de toekomst tegen het zelfde probleem aan kan lopen.

Strava