AddEdit
de bewerking toevoegen voegt een nieuwe ingang in de directory-server database. Als de DN-naam in het add-verzoek al bestaat in de directory, dan zal de server geen dubbele vermelding toevoegen, maar zal de resultaatcode in het add-resultaat instellen op decimaal 68, “entryAlreadyExists”.
- LDAP-compatibele servers zullen de DNN-naam die wordt verzonden in het add-verzoek nooit derefereren wanneer wordt geprobeerd de ingang te vinden, dat wil zeggen dat DNN-namen nooit worden gedealiaseerd.,
- LDAP-compatibele servers zullen ervoor zorgen dat de DN-naam en alle attributen voldoen aan naamgevingsstandaarden.
- de vermelding die moet worden toegevoegd mag niet bestaan, en de directe meerdere moet bestaan.
in het bovenstaande voorbeeld moet uid=user,ou=people,dc=example,dc=com
niet bestaan, en ou=people,dc=example,dc=com
moet bestaan.
Bind (authenticate)bewerken
wanneer een LDAP-sessie wordt gemaakt, dat wil zeggen wanneer een LDAP-client verbinding maakt met de server, wordt de authenticatiestatus van de sessie ingesteld op anoniem. De BIND-bewerking stelt de verificatiestatus voor een sessie vast.,
Simple BIND en SASL PLAIN kunnen de DN en het wachtwoord van de gebruiker in platte tekst verzenden, zodat de verbindingen die gebruik maken van Simple of SASL Plain versleuteld moeten worden met behulp van Transport Layer Security (TLS). De server controleert meestal het wachtwoord met hetuserPassword
attribuut in de named entry. Anonymous BIND (met lege DN en wachtwoord) reset de verbinding naar anonymous status.
SASL (Simple Authentication and Security Layer) BIND levert authenticatieservices via een breed scala aan mechanismen, bijvoorbeeld Kerberos of het clientcertificaat dat met TLS wordt verzonden.,
BIND stelt ook de LDAP-protocolversie in door een versienummer in de vorm van een geheel getal te sturen. Als de client een versie vraagt die de server niet ondersteunt,moet de server de resultaatcode in het BIND-antwoord op de code instellen voor een protocolfout. Normaal gesproken moeten clients LDAPv3 gebruiken, wat de standaard is in het protocol, maar niet altijd in LDAP-bibliotheken.
BIND moest de eerste operatie zijn in een sessie in LDAPv2, maar is niet vereist vanaf LDAPv3., In LDAPv3 verandert elke succesvolle BIND-aanvraag de verificatiestatus van de sessie en elke mislukte BIND-aanvraag stelt de verificatiestatus van de sessie opnieuw in.
DeleteEdit
om een item te verwijderen, verzendt een LDAP-client een correct gevormd verwijderverzoek naar de server.,
- een verwijderingsverzoek moet de distinguished name van de te verwijderen vermelding bevatten
- controle van het verzoek kan ook worden gekoppeld aan het verwijderingsverzoek
- Servers derefereren geen aliassen bij het verwerken van een verwijderingsverzoek
- alleen bladvermeldingen (vermeldingen zonder ondergeschikten) kunnen worden verwijderd door een verwijderingsverzoek., Sommige servers ondersteunen een operationeel attribuut
hasSubordinates
waarvan de waarde aangeeft of een item ondergeschikte entries heeft, en sommige servers ondersteunen een operationeel attribuutnumSubordinates
wat het aantal entries aangeeft dat ondergeschikt is aan de entry die hetnumSubordinates
attribuut bevat. - sommige servers ondersteunen het beheer van de subtree delete request, waardoor het verwijderen van de DN en alle objecten die ondergeschikt zijn aan de DN mogelijk is, onderworpen aan toegangscontroles., Verwijderaanvragen zijn onderworpen aan toegangscontroles, dat wil zeggen of een verbinding met een bepaalde authenticatiestatus wordt toegestaan om een bepaalde vermelding te verwijderen, wordt beheerst door serverspecifieke toegangscontrolemechanismen.
zoeken en Comparedit
De zoekopdracht wordt gebruikt om zowel naar items te zoeken als te lezen. De parameters zijn:
baseObject de naam van het basisobject (of mogelijk de root) waarmee de zoekopdracht moet worden uitgevoerd. scope welke elementen onder het basisobject te zoeken., Dit kan zijn:BaseObject
(zoek alleen het genoemde item, meestal gebruikt om één item te lezen),singleLevel
(items direct onder de basis DN), ofwholeSubtree
(de gehele subboom beginnend bij de basis DN). filtercriteria voor het selecteren van elementen binnen scope., Bijvoorbeeld, het filter(&(objectClass=person)(|(givenName=John)(mail=john*)))
selecteert “personen” (elementen van objectClassperson
) waarbij de overeenkomende regels voorgivenName
enmail
bepalen of de waarden voor die attributen overeenkomen met de filterverklaring. Merk op dat een veel voorkomende misvatting is dat LDAP-gegevens hoofdlettergevoelig zijn, terwijl in feite matchingregels en orderregels matching, vergelijkingen en relatieve waarderelaties bepalen., Als de voorbeeldfilters nodig waren om overeen te komen met het geval van de attribuutwaarde, moet een uitbreidbaar match-filter worden gebruikt, bijvoorbeeld(&(objectClass=person)(|(givenName:caseExactMatch:=John)(mail:caseExactSubstringsMatch:=john*)))
derefAliases of en hoe aliasingangen moeten worden gevolgd (items die naar andere items verwijzen), attributen die attributen moeten worden geretourneerd in resultaatingangen. groottebeperkt, tijdslimiet Maximum aantal inzendingen om terug te keren, en maximale tijd om te zoeken uit te voeren. Deze waarden kunnen echter geen beperkingen overschrijven die de server plaatst op de grootte-en tijdslimiet. typesOnly retourneert alleen attribuuttypen, niet attribuutwaarden.,
De server retourneert de overeenkomende items en mogelijke vervolgverwijzingen. Deze kunnen in elke bestelling worden geretourneerd. Het eindresultaat zal de resultaatcode bevatten.
De Vergelijkingsbewerking neemt een DN, een attribuutnaam en een attribuutwaarde, en controleert of het benoemde item dat attribuut met die waarde bevat.
ModifyEdit
de bewerking wordt gebruikt door LDAP-clients om de LDAP-server te verzoeken wijzigingen aan te brengen in bestaande items. Pogingen om items te wijzigen die niet bestaan zullen mislukken. Wijzig aanvragen zijn onderworpen aan toegangscontroles zoals geïmplementeerd door de server.,
de bewerking wijzigen vereist dat de DN-naam (DN) van het item wordt opgegeven, en een reeks wijzigingen. Elke verandering in de reeks moet één zijn van:
- toevoegen (een nieuwe waarde toevoegen, die niet al in het attribuut mag bestaan)
- verwijderen (een bestaande waarde verwijderen)
- vervangen (een bestaande waarde vervangen door een nieuwe waarde)
LDIF voorbeeld van het toevoegen van een waarde aan een attribuut:
dn: dc=example,dc=comchangetype: modifyadd: cncn: the-new-cn-value-to-be-added-
om de waarde van een bestaande te vervangen attribuut, gebruik het sleutelwoord vervangen., Als het kenmerk meerdere waarden heeft, moet de client de waarde opgeven van het kenmerk dat moet worden bijgewerkt.
om een attribuut uit een item te verwijderen, gebruikt u het trefwoord verwijderen en de changetype-aanduiding wijzigen. Als het attribuut meerdere waarden heeft, moet de client de waarde van het te verwijderen attribuut opgeven.
er is ook een Modify-Increment extensie die het mogelijk maakt een incrementable attribuutwaarde te verhogen met een bepaald bedrag., Het volgende voorbeeld met behulp van LDIF increments employeeNumber met 5:
dn: uid=user.0,ou=people,dc=example,dc=comchangetype: modifyincrement: employeeNumberemployeeNumber: 5-
wanneer LDAP-servers zich in een gerepliceerde topologie bevinden, moeten LDAP-clients overwegen om de controle na het lezen te gebruiken om updates te verifiëren in plaats van een zoekopdracht na een update. Het post-read-besturingselement is zo ontworpen dat toepassingen Geen zoekopdracht hoeven uit te geven na een update – het is een slechte vorm om een item op te halen met als enig doel te controleren of een update werkte vanwege het replicatie uiteindelijke consistentiemodel., Een LDAP-client mag er niet vanuit gaan dat er voor elke aanvraag verbinding wordt gemaakt met dezelfde directoryserver, omdat architects mogelijk load-balancers of LDAP-proxy ‘ s of beide tussen LDAP-clients en servers heeft geplaatst.
Wijzig DNEdit
Wijzig DN (item verplaatsen / hernoemen) neemt de nieuwe RDN (relatieve DN-naam), optioneel de DN van de nieuwe ouder, en een vlag die aangeeft of de waarde(s) in de item die overeenkomen met de oude RDN moet worden verwijderd. De server kan het hernoemen van volledige directory subtrees ondersteunen.,
een update operatie is atomisch: andere operaties zullen ofwel de nieuwe ingang of de oude zien. Aan de andere kant definieert LDAP geen transacties van meerdere bewerkingen: als u een item leest en vervolgens wijzigt, heeft een andere client het item mogelijk in de tussentijd bijgewerkt. Servers kunnen extensies implementeren die dit ondersteunen.
Extended operationsEdit
De Extended operatie is een generieke LDAP operatie die nieuwe operaties kan definiëren die geen deel uitmaakten van de oorspronkelijke protocolspecificatie. StartTLS is een van de belangrijkste uitbreidingen., Andere voorbeelden zijn annuleren en wachtwoord wijzigen.
StartTLSEdit
met de STARTTLS-operatie wordt de beveiliging van de transportlaag (de afstammeling van SSL) op de verbinding ingesteld. Het kan de vertrouwelijkheid van gegevens (om gegevens te beschermen tegen naleving door derden) en/of de bescherming van gegevensintegriteit (die de gegevens beschermt tegen manipulatie) bieden. Tijdens TLS onderhandelingen verzendt de server zijn X. 509 certificaat om zijn identiteit te bewijzen. De klant kan ook een certificaat sturen om zijn identiteit te bewijzen. Daarna mag de cliënt SASL/EXTERNAL gebruiken., Door SASL/EXTERNAL te gebruiken, verzoekt de client de server zijn identiteit af te leiden van referenties die op een lager niveau worden verstrekt (zoals TLS). Hoewel de server technisch gezien alle identiteitsgegevens mag gebruiken die op elk lager niveau zijn vastgesteld, gebruikt de server doorgaans de identiteitsgegevens die door TLS zijn vastgesteld.
Servers ondersteunen ook vaak het niet-standaard” LDAP “(“Secure LDAP”, algemeen bekend als” LDAP over SSL”) protocol op een aparte poort, standaard 636., LDAP verschilt op twee manieren van LDAP:1) bij het verbinden maken de client en de server TLS voordat LDAP-berichten worden overgedragen (zonder een StartTLS-operatie) en 2) de LDAP-verbinding moet worden gesloten bij het sluiten van TLS.
sommige” LDAPS ” – clientbibliotheken versleutelen alleen communicatie; ze controleren de hostnaam niet met de naam in het opgegeven certificaat.
AbandonEdit
De ‘Abandonedit’ – operatie vraagt de server om een operatie genaamd met een bericht-ID af te breken. De server hoeft het verzoek niet te honoreren. Noch verlaten noch een succesvol verlaten operatie stuur een reactie., Een soortgelijke Cancel extended-bewerking stuurt wel reacties, maar niet alle implementaties ondersteunen dit.
UnbindEdit
De Unbinde bewerking verlaat alle uitstaande bewerkingen en sluit de verbinding. Het reageert niet. De naam is van historische oorsprong, en is niet het tegenovergestelde van de Bind operatie.
Clients kunnen een sessie afbreken door simpelweg de verbinding te sluiten, maar ze moeten Unbind gebruiken. Unbind staat de server toe om de verbinding sierlijk te sluiten en bronnen vrij te maken die het anders enige tijd zou bewaren totdat de client de verbinding had verlaten., Het geeft de server ook de opdracht om bewerkingen die kunnen worden geannuleerd te annuleren en om geen reacties te verzenden voor bewerkingen die niet kunnen worden geannuleerd.