LDAP Lightweight Directory Access Protocol Standards LDAP
rfc4373
Bulk Update/Replication Protocol
LBURP permet à un client LDAP d’effectuer des modifications/réplications auprès d’un serveur LDAP. LBURP définis un jeu opérations de modification dans une paire d’opérations étendue. Ces opérations contiennent chacune un numéro de séquence et une liste d’une ou plusieurs opérations de modification à effectuer.
Initialisation
Le protocole est initié quand un fournisseur envoie StartLBURPRequest à un consommateur, qui notifie qu’un flux de LBURPUpdateRequests va suivre. Le fournisseur associe les sémantiques avec ce flux de requêtes en incluant l’OID du style de mise à jours/réplication dans le StartLBURPRequest. Le consommateur répond avec un message StartLBURPResponseflux de mise à jours
Après qu’un consommateur a répondu avec un StartLBURPResponse, le fournisseur envoie un flux de messages LBURPUpdateRequest au consommateur. Les messages dans ce flux peuvent être envoyés de manière asynchrone pour maximiser l’efficacité du transfert. Le consommateur répond à chaque LBURPUpdateRequest avec un message LBURPUpdateResponse.LBURPUpdateRequest
Chaque LBURPUpdateRequest contient un numéro de séquence identifiant sa position relative dans le flux. et un UpdateOperationList contenant la liste ordonnée des opérations à appliquer au DIT.LBURPUpdateResponse
Quand un consommateur a traité les opérations d’une UpdateOperationList, il envoie un LBURPUpdateResponse au fournisseur indiquant le succès ou l’échec des opérations.Fin de mise à jours
Une fois que le fournisseur a envoyé tous ses LBURPUpdateRequest, il envoie un message EndLBURPRequest au consommateur pour terminer le flux. Une fois reçu toutes les requêtes LBURPOperation et après avoir reçu le EndLBURPRequest, le consommateur répond avec un EndLBURPResponse.Applicabilité du protocole
LBURP est conçu pour faciliter les mise à jours en masse des serveurs LDAP. Il peut aussi être utilisé pour synchroniser les annuaires maître et esclave. Il n’est pas conçus dans l’optique de fournir des réplication multi-master.Description du flux
F = FournisseurC = Consommateur
F - C StartLBURPRequest. Contient l’OID pour le stype d’updte LBURP
C - F StartLBURPResponse. Contient une instruction optionnelle maxOperations
F - C Un flux de mises à jours consistant de 0 ou plusieurs LBURPUpdateRequest. Les requêtes peuvent être envoyés de manière asynchrone. Contient le numéro de séquence, et un updateOperationList d’opérations de mises à jours.
C - F LBURPUpdateResponse. Envoyé quand le consommateur à finit le traitement d’une updateOperationList
F - C EndLBURPRequest. Envoyé par le fournisseur quand il a envoyé tous ses LBURPUpdateRequest. Contient un numéro de séquence supérieur au dernier LBURPUpdateRequest envoyé.
C - F EndLBURPResponse. Envoyé par le consommateur une fois toutes les LBURPOperation terminées et après avoir reçu EndLBURPRequest.
Elements du protocole
LBURP utilise 2 messages LDAP extendedRequest: StartLBURPRequest et EndLBURPRequest pour initier et terminer le protocole. Un troisième extendedRequest, LBURPUpdateRequest est utilisé pour envoyer les opérations au consommateur.ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
requestName [0] LDAPOID,
requestValue [1] OCTET STRING OPTIONAL
}
ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
COMPONENTS of LDAPResult,
responseName [10] LDAPOID OPTIONAL,
response [11] OCTET STRING OPTIONAL
}
StartLBURPRequest
requestName vaut 1.3.6.1.1.17.1 et requestValue contient la valeur suivante encodé BER:StartLBURPRequestValue ::= SEQUENCE {
updateStyleOID LDAPOID
}
updateStyleOID
Identifie de manière unique le style de mise à jours à utiliser. LBUPR Incremental Update vaut 1.3.6.1.1.17.7StartLBURPResponse
responseName vaut 1.3.6.1.1.17.2 et response contient la valeur suivante encodé BER:StartLBURPResponseValue ::= maxOperations
maxOperations ::= INTEGER (0 .. maxInt)
maxInt INTEGER ::= 2147483647 — (2^^31 - 1) —
maxOperations
Instruit le fournisseur de ne pas envoyer plus d’opération que cette valeur par updateOperationList. Si le consommateur n’envoie pas cette valeur, il doit être préparé à accèpter toutes les opérations fournies.LBURPUpdateRequest
requestName vaut 1.3.6.1.1.17.5, et requestValue contient la valeur suivante encodé BER:LBURPUpdateRequestValue ::= SEQUENCE {
sequenceNumber INTEGER (1 .. maxInt),
updateOperationList UpdateOperationList
}
sequenceNumber
Permet au consommateur de traiter les requête LBURPOperation dans l’ordre spécifié par le fournisseur. La première valeur doit être 1 et incrémenté à chaque LBURPUpdateRequest.UpdateOperationList
Liste d’une ou plusieurs requête de mise à jours LDAP:UpdateOperationList ::= SEQUENCE OF SEQUENCE{
updateOperation CHOICE {
addRequest AddRequest,
modifyRequest ModifyRequest,
delRequest DelRequest,
modDNRequest ModifyDNRequest
},
controls [0] Controls OPTIONAL
}
LBURPUpdateResponse
Envoyé au fournisseur pour signaler que toutes les opérations d’un UpdateOperationList ont été complétés et pour donner le résultat des opérations. responseName contient 1.3.6.1.1.17.6OperationResults
Quand un élément de réponse est inclus dans un message LBURPUpdateResponse, il contient la valeur suivante encodé BER:OperationResults ::= SEQUENCE OF OperationResult
OperationResult ::= SEQUENCE {
operationNumber INTEGER,
ldapResult LDAPResult
}
operationNumber
Identifie l’opération de mise à jours LDAP dans une UpdateOperationList d’un LBURPUpdateRequest qui a échoué. Les opérations sont numérotées en commençant à 1.EndLBURPRequest
requestName vaut 1.3.6.1.1.17.3 et requestValue contient la valeur suivante encodé BER:EndLBURPRequestValue ::= SEQUENCE {
sequenceNumber INTEGER (1 .. maxInt)
}