Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
24 août 2013

LDAP Lightweight Directory Access Protocol           Standards LDAP


rfc2589

rfc2589

Extensions pour les services d'annuaire dynamiques

   LDAP support les accès aux services d'annuaire statique, permettant d'effectuer des opérations relativement rapide. Les services d'annuaire dynamiques sont différents puisqu'ils stockent des informations qui ont une durée de vie. un cas typique est un client ou une personne qui est soit online, dans ce cas il a une entrée dans l'annuaire, soit offline et dans ce cas l'entrée disparait. Bien que les opérations du protocole et les attributs sont utilisés de la même manière que pour les services d'annuaires statiques, les clients qui stockent ces informations dans l'annuaire doivent périodiquement rafraîchir ces informations. Les entrées qui n'ont pas été rafraîchies après une période données sont supprimés par le serveur. Un mécanisme de contrôle de flux du serveur est aussi décrit et permet au serveur d'informer les clients de la fréquence de rafraîchissement.

Prérequis

   Les extension de protocole doivent permettre d'accéder aux informations dynamiques dans un annuaire de manière standard.

Entrées dynamiques et classes d'objet

   Une entrée dynamique est un objet dans l'annuaire qui a une durée de vie associée avec lui. Cette durée de vie est définie lors de la création de l'objet et quand il expire, l'objet est supprimé. En invoquant l'opération étendue refresh, le TTL est réinitialisé.

Requête de rafraichissement

Cette opération envoyée par un client indique au serveur de conserver l'entrée dynamique et de réinitialiser sa durée de vie. Un client peut demander cette opération en transmettant un PDU contenant un ExtendedRequest:
ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
    requestName [0] LDAPOID,
    requestValue [1] OCTET STRING OPTIONAL
    }

requestName doit être définis à: "1.3.6.1.4.1.1466.101.119.1"
requestValue va contenir le DER du type ASN.1 suivant:


SEQUENCE {
    entryName [0] LDAPDN,
    requestTtl [1] INTEGER
    }

entryName est le nom UTF8 de l'entrée dynamique. Cette entrée doit déjà exister.
requestTtl est le temps en secondes (1 à 31557600) du nouveau TTL à définir.

Réponse au rafraichissement

Si un serveur implémente cette extension, le serveur doit répondre un PDU contenant ExtendedResponse:
ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
    COMPONENTS OF LDAPResult,
    responseName [10] LDAPOID OPTIONAL,
    response [11] OCTET STRING OPTIONAL
    }

responseName contient la même chaîne que dans la demande. Le champ response va contenir un DER de la sequence ASN.1 suivante:


SEQUENCE {
    responseTtl [1] INTEGER
    }

   Le champ responseTtl est le temps en secondes que le serveur a choisi comme champ ttl pour cette entrée. Il ne doit pas être plus petit que le choix du client, mais il peut être plus grand. Cependant, pour éviter tout abus, les serveurs sont autorisés à raccourcir le TTL d'un client à un minimumde 86400 secondes.

Schéma

dynamicObject Cette classe définis une entrée dynamique
entryTtl Maintient le TTL de l'entrée
dynamicSubtrees dans le rootDSE, maintient les sous-arborescences où sont supportée les entrées dynamiques.


( 1.3.6.1.4.1.1466.101.119.2 NAME 'dynamicObject'
DESC 'This class, if present in an entry, indicates that this entry has a limited lifetime and may disappear automatically when its time-to-live has reached 0. There are no mandatory attributes of this class, however if the client has not supplied a value for the entryTtl attribute, the server will provide one.'
SUP top AUXILIARY )
    
( 1.3.6.1.4.1.1466.101.119.3 NAME 'entryTtl'
DESC 'This operational attribute is maintained by the server and appears to be present in every dynamic entry. The attribute is not present when the entry does not contain the dynamicObject object class. The value of this attribute is the time in seconds that the entry will continue to exist before disappearing from the directory. In the absence of intervening refresh operations, the values returned by reading the attribute in two successive searches are guaranteed to be nonincreasing. The smallest permissible value is 0, indicating that the entry may disappear without warning. The attribute is marked NO-USER-MODIFICATION since it may only be changed using the refresh operation.'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE
NO-USER-MODIFICATION USAGE dSAOperation )
    
( 1.3.6.1.4.1.1466.101.119.4 NAME 'dynamicSubtrees'
DESC 'This operational attribute is maintained by the server and is present in the Root DSE, if the server supports the dynamic extensions described in this memo. The attribute contains a list of all the subtrees in this directory for which the server supports the dynamic extensions.'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 NO-USER-MODIFICATION
USAGE dSAOperation )

Prérequis client

   Les clients peuvent vérifier si le serveur supporte les extensions dynamiques en vérifiant le champs supportedExtension dans le RootDSE. Les client doivent vérifier le dynamicSubtrees pour vérifier si les extensions dynamiques sont supportée sur une arborescence spécifique.

  Les client ne doivent pas s'attendre à ce qu'une entrée soit présente après que le TTL soit dépassé. Toutefois, les client ne doivent pas assumer que l'objet sera supprimé immédiatement après la durée de vie atteinte.

  le CRP (Client Refresh Period) est définis par le serveur, basé sur le entryTtl. Une fois une opération AddRequest effectuée, le client devrait immédiatement envoyer une opération étendue refresh pour récupérer le CRP dans la responseTtl.

  Les client ne doivent pas demander des refresh sur des entrées qui n'existent pas et devraient toujours être prêt à manipuler des cas d'entrées expirées. Les clients devraient également être préparés à des opération de refresh qui échouent (ex: un proxy down).

Prérequis serveur

   Les serveur sont responsables de la suppression des objets expirés, mais il n'est pas requis qu'ils le fasse immédiatement.