\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{sam. oct. 19 19:10:54 CEST 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={slapd-ldap},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Backend ldap},
CreationDate={D:20131019191054},
ModDate={D:20131019191054},
Keywords={LDAP;OpenLDAP;Lightweight Directory Access Protocol}
}}
\begin{document}
 
\begin{center}
{\Huge slapd-ldap }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Backend ldap}
 
\vspace{10mm}
 
\hspace{1mm}  Ce backend n'est pas une base, il agit comme proxy pour transférer des requêtes entrantes à un autre serveur LDAP. Les référants sont pleinement traités au lieu d'être retournés au client. Les sessions qui Bind explicitement avec ce backend créent toujours leur propre connexion privée au serveur LDAP distant. Les sessions anonymes vont partager une seule connexion anonyme. Pour les sessions liées avec d'autres mécanismes, toutes les sessions avec le même DN vont partager la même connexion. Celà permet d'améliorer l'efficacité du proxy.
\vspace{5mm} \\
 
 
\hspace{1mm}  La base ldap peut aussi agir comme service d'information, par ex. l'identité des clients authentifiés localement est affirmé sur le serveur distant, possiblement sous une forme modifiée. Dans ce but, le proxy bind au serveur distant avec une identité administrative, et, si requis, authorise l'identité fournie.
\vspace{5mm} \\
 
 
\hspace{1mm}  L'instance proxy de slapd doit contenir le schéma pour les attributs et les classes d'object utilisé dans les requêtes. slapd doit être configuré avec le support des threads, et le paramètre threads adapté.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Configuration }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} uri <ldapurl>]{Serveur LDAP à utiliser. Plusieurs URI peuvent être spécifiés (ex: uri "ldap://host/ ldap://backup-host/")}
\item[\hspace{1mm} acl-bind bindmethod=simple|sasl \texttt{[}binddn=<simple DN>\texttt{]} \texttt{[}credentials=<simple password>\texttt{]} \texttt{[}saslmech=<SASLmech>\texttt{]}]{}
\item[\hspace{1mm} \texttt{[}secprops=<properties>\texttt{]} \texttt{[}realm=<realm>\texttt{]} \texttt{[}authcId=<authenticationID>\texttt{]} \texttt{[}authzId=<authorization ID>\texttt{]}]{}
\item[\hspace{1mm} \texttt{[}starttls=no|yes|critical\texttt{]} \texttt{[}tls\_cert=<file>\texttt{]} \texttt{[}tls\_key=<file>\texttt{]} \texttt{[}tls\_cacert=<file>\texttt{]} \texttt{[}tls\_cacertdir=<path>\texttt{]}]{}
\item[\hspace{1mm} \texttt{[}tls\_reqcert=never|allow|try|demand\texttt{]} \texttt{[}tls\_ciphersuite=<ciphers>\texttt{]} \texttt{[}tls\_protocol\_min=<version>\texttt{]} \texttt{[}tls\_crlcheck=none|peer|all\texttt{]}]{Permet de définir les paramètres de la méthode d'authentification utilisé par le proxy pour collecter les informations liées au contrôle d'accès L'identité définie par cette directive doit avoir l'accès read sur le serveur cible aux attributs utilisés sur le proxy pour la vérification des ACL.}
\item[\hspace{1mm} cancel \{ABANDON|ignore|exop\texttt{[}-discover\texttt{]}\}]{Définis comment manipuler les annulations d'opérations. abandon (abandonne immédiatement l'opération), ignore (aucune action et la réponse est ignorée), exop (une opération cancel est envoyée au serveur distant), exop-discover (supporte l'opération étendue cancel)}
\item[\hspace{1mm} chase-referrals \{YES|no\}]{Active/désactive le repérage de référence automatique, qui est déléguée à libldap, avec un rebind éventuel si la directive rebind-as-user est utilisée défaut : yes}
\item[\hspace{1mm} conn-ttl <time>]{Force la suppression d'une connexion en cache et la recrée après le ttl donné, sans regarder s'il elle est active ou non.}
\item[\hspace{1mm} idassert-authzFrom <authz-regexp>]{Sélectionne quelles identités locales sont autorisées à exploiter la fonction d'assertion d'identité}
\item[\hspace{1mm} idassert-bind bindmethod=none|simple|sasl \texttt{[}binddn=<simpleDN>\texttt{]} \texttt{[}credentials=<simple password>\texttt{]}]{}
\item[\hspace{1mm} \texttt{[}saslmech=<SASL mech>\texttt{]} \texttt{[}secprops=<properties>\texttt{]} \texttt{[}realm=<realm>\texttt{]} \texttt{[}authcId=<authenticationID>\texttt{]}]{}
\item[\hspace{1mm} \texttt{[}authzId=<authorization ID>\texttt{]} \texttt{[}authz=native|proxyauthz\texttt{]} \texttt{[}mode=<mode>\texttt{]} \texttt{[}flags=<flags>\texttt{]} \texttt{[}starttls=no|yes|critical\texttt{]}]{}
\item[\hspace{1mm} \texttt{[}tls\_cert=<file>\texttt{]} \texttt{[}tls\_key=<file>\texttt{]} \texttt{[}tls\_cacert=<file>\texttt{]} \texttt{[}tls\_cacertdir=<path>\texttt{]} \texttt{[}tls\_reqcert=never|allow|try|demand\texttt{]}]{}
\item[\hspace{1mm} \texttt{[}tls\_ciphersuite=<ciphers>\texttt{]} \texttt{[}tls\_protocol\_min=<version>\texttt{]} \texttt{[}tls\_crlcheck=none|peer|all\texttt{]}]{Permet de définir les paramètres de la méthode d'authentification utilisée en interne par le proxy pour autoriser les connexions qui sont authentifiées par d'autres bases de données. L'identité définie doit avoir l'accès auth sur le serveur cible sur les attributs utilisés et doit avoir le droit d'authoriser d'autres users (proxyAuth sur tout le DN, ex: authzTo=dn.subtree:"") et le serveur distant doit avoir authz-policy mis à to ou both.}
\item[\hspace{1mm} <mode> := \{legacy|anonymous|none|self\}]{legacy implique que le proxy va effectuer un simple bind (authcDN) ou SASL (authcID) et assert l'identité du client quand il n'est pas anonyme. Anonymous et self, assert une chaîne vide ou l'identité du client, respectivement.}
\item[\hspace{1mm} <flag> := \{override|\texttt{[}non-\texttt{]}prescriptive|proxy-authz-\texttt{[}non-\texttt{]}critical\}]{override, l'assertion de l'identité prend place même quand la base est autorisée pour l'identité du client. Quand prescriptive est utilisé, les opérations échouent avec inappropriateAuthentication pour les identités dont l'assertion n'est pas permise par le motif idassert-authzFrom. non-prescriptive, les opérations sont effectuées anonymement pour les identités dont l'assertion n'est pas permise par le pattern idassert-authzFrom. proxy-authz-non-critical, le contrôle proxyAuthz contrôle n'est pas marqué comme critique, en violation de la RFC 4370. il est recommandé d'utiliser proxy-authz-critical}
\item[\hspace{1mm} idassert-passthru <authz-regexp>]{Si définis, sélectionne quelle identité local bypasse l'assertion d'identité. ces identités doivent être connues par l'hôte distant. la chaîne authz-regexp suit les règles définies pour authzFrom}
\item[\hspace{1mm} idle-timeout <time>]{Force une connexion en cache à être supprimée puis recrée après une timeout}
\item[\hspace{1mm} keepalive <idle>:<probes>:<interval>]{Définis les valeurs de idle, probes et interval utilisés pour certifier si un socket est actif. idle est le nombre de secondes avant qu'une connexion non-active reçoive un keepalive. probes et le nombre maximum de keepalive, et interval est le nombre de seconde entre chaque keepalive.}
\item[\hspace{1mm} network-timeout <time>]{Définis la valeur timeout réseau après que poll(2)/select(2) suivant un retour connect(2) en cas d'inactivité, en seconde}
\item[\hspace{1mm} norefs <NO|yes>]{à yes, ne retourne pas de réponse de référence de recherche. (défaut : NO, sauf si LDAPv2)}
\item[\hspace{1mm} noundeffilter <NO|yes>]{à yes, retourne success au lieu de rechercher si un filtre est indéfinis ou contient des portions indéfinies. Par défaut, la recherche est propagée après avoir remplacé les portions indéfinies avec (!(objectClass=*)), qui correspond à un résultat vide.}
\item[\hspace{1mm} onerr \{CONTINUE|stop\}]{Permet de sélectionner le mode en cas d'erreur retourné par le serveur distant durant une recherche. à Continue, retourne un success. à stop, l'erreur est retournée au client.}
\item[\hspace{1mm} protocol-version \{0,2,3\}]{Indique quel protocole utiliser pour contacter le serveur distant (0, le protocole utilisé est le même que celui utilisé par le client)}
\item[\hspace{1mm} proxy-whoami NO|yes]{Active le proxy de l'opération WhoAmI, back-ldap va remplacer la routine whoami de slapd avec le sien.}
\item[\hspace{1mm} quarantine <interval>,<num>\texttt{[} ;<interval>,<num>\texttt{[}...\texttt{]}\texttt{]}]{Met en quarantaine les URI qui ont retourné LDAP\_UNAVAILABLE. retente seulement à interval seconde depuis la dernière tentative, pour exactement num fois ; puis utilise le prochain pattern. si num vaut +, retente indéfiniment.}
\item[\hspace{1mm} rebind-as-user \{NO|yes\}]{à yes, les crédential du client sont mémorisés pour rebind, en tentant de re-établir une connexion perdue, ou lors de la poursuite d'aiguillage si chase-referrals est à yes.}
\item[\hspace{1mm} session-tracking-request \{NO|yes\}]{Ajoute un contrôle de traçage de session pour toutes les requêtes. l'IP/hostname du client et l'identité associée à chaque requête sont envoyés au serveur distant pour information. Est incompatible avec protocol-version 2.}
\item[\hspace{1mm} single-conn \{NO|yes\}]{Annule toute connexion en cache si le client se rebind}
\item[\hspace{1mm} t-f-support \{NO|yes|discover\}]{Active le support des filtres absolus des serveurs distant (RFC4526).}
\item[\hspace{1mm} timeout \texttt{[}<op>=\texttt{]}<val> \texttt{[}...\texttt{]}]{Permet de définir des timeouts par opération. <op> ::= bind, add, delete, modrdn, modify, compare, search}
\item[\hspace{1mm} tls \{\texttt{[}try-\texttt{]}start|\texttt{[}try-\texttt{]}propagate|ldaps\} \texttt{[}tls\_cert=<file>\texttt{]} \texttt{[}tls\_key=<file>\texttt{]} \texttt{[}tls\_cacert=<file>\texttt{]} \texttt{[}tls\_cacertdir=<path>\texttt{]}]{}
\item[\hspace{1mm} \texttt{[}tls\_reqcert=never|allow|try|demand\texttt{]} \texttt{[}tls\_ciphersuite=<ciphers>\texttt{]} \texttt{[}tls\_crlcheck=none|peer|all\texttt{]}]{Spécifie l'utilisation de TLS pour l'initialisation des connexions.}
\item[\hspace{1mm} use-temporary-conn NO|yes]{Créé une connexion temporaire en compétition avec d'autres threads pour une connexion partagée. Sinon, attent jusqu'à ce qu'une connexion partagée soit disponible.}
\end{description}
\end{flushleft}
\end{document}
