\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]{mer. nov. 6 15:15:13 CET 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={rfc5805},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Transactions LDAP},
CreationDate={D:20131106151513},
ModDate={D:20131106151513},
Keywords={LDAP;Lightweight Directory Access Protocol}
}}
\begin{document}
 
\begin{center}
{\Huge rfc5805 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Transactions LDAP}
 
\vspace{10mm}
 
\hspace{1mm}  Les opérations de modifications LDAP tels que Add, Delete et Modify ont des propriétés ACID (Atomic, Consistency, Isolation, Durability). Chacune des ces modifications agissent sur une seule entrée à la fois. Il est souvent désirable de modifier plusieurs entrées en une seule unité d'intéraction, une transaction. Les transactions sont nécessaires pour supporter certaines applications, tel que le provisionning. Cette extension consiste de 2 opérations étendue, un contrôle, et une notification non-sollicitée. l'opération Start Transaction est utilisé pour obtenir un identifiant de transaction.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Requête et réponse Start Transaction }
 
\
 
\hspace{1mm}  Une requête Start Transaction est un LDAPMessage de CHOICE \textbf{extendedReq} où \textbf{requestName} est \textbf{1.3.6.1.1.21.1} et \textbf{requestValue} est absent.
\vspace{5mm} \\
\hspace{1mm}  Une réponse Start Transaction est un LDAPMessage de CHOICE \textbf{extendedRes} envoyé en réponse à une requête Start Transaction avec \textbf{responseName} absent.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Contrôle Transaction Specification }
 
\
 
\hspace{1mm}  C'est un LDAPControl où \textbf{controlType} est \textbf{1.3.6.1.1.21.2}, la criticité à TRUE, et \textbf{controlValue} est un ID de transaction. Ce contrôle est approprié pour les requêtes de modification tels que Add, Delete, Modify, ModifyDN et Password Modify.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Requête et réponse End Transaction }
 
\
 
\hspace{1mm} Une requête End Transaction est un LDAPMessage de CHOICE extendedReq où requestName est 1.3.6.1.1.21.3 et requestValue contient un txnEndReq encodé BER:
 
{\ttfamily
txnEndReq ::= SEQUENCE \{\\ \hspace{2mm}commit BOOLEAN DEFAULT TRUE,\\ \hspace{2mm}identifier OCTET STRING \}\\
}
\vspace{8mm}
 
\hspace{1mm}  commit à TRUE, indiwue une requête pour envoyer la transaction identifiée par identifier. à FALSE indique une requête d'abandon de la transaction identifiée.
\vspace{5mm} \\
 
 
\hspace{1mm} Une réponse End Transaction est un LDAPMessage envoyé en réponse à un requête End Transaction. Le nom de réponse est absent. responseValue si présent, contient un txEndRes encodé BER:
 
{\ttfamily
txnEndRes ::= SEQUENCE \{\\ \hspace{2mm}messageID MessageID OPTIONAL,\\ \hspace{2mm}— msgid associated with non-success resultCode\\ \hspace{2mm}updatesControls SEQUENCE OF updateControls SEQUENCE \{\\ \hspace{2mm}messageID MessageID,\\ \hspace{2mm}— msgid associated with controls\\ \hspace{2mm}controls Controls\\ \hspace{2mm}\} OPTIONAL\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm}  MessageID fournis l'id de message de la requête de mise à jours associée avec une réponse autre que success. messageID est absent quand un resulCode est success. updatesControls fournis une facilité pour retourner les contrôles de réponse qui normalement (en l'absence de transactions) seraient retournés dans une réponse de mise à jours.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Transaction annulée }
 
\
 
\hspace{1mm}  Le Aborted Transaction Notice est un message de notification non-sollicité où responseName est 1.3.6.1.1.21.4 et responseValue est présent et contient un id de transaction.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Découverte d'extension }
 
\
 
\hspace{1mm}  Les serveurs implémentant cette spécification devraient publier \textbf{1.3.6.1.1.21.1} et \textbf{1.3.6.1.1.21.3} dans \textbf{supportedExtension} et \textbf{1.3.6.1.1.21.2} dans \textbf{supportedControl}
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Démarrer une transaction }
 
\
 
\hspace{1mm}  Un client qui souhaite effectuer une séquence de modifications dans l'annuaire envoie une requête Start Transaction. Le serveur envoie une réponse Start Transaction avec un ID de transaction et un resultCode success.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Spécifications d'une transaction }
 
\
 
\hspace{1mm}  Le client peut fournir une ou plusieurs requêtes de modifications, chacune avec un contrôle Transaction Specification contenant l'ID de transaction indiquant les modifications à traiter. Chacune de ces requêtes doivent avoir une valeur messageID différente. Si le serveur ne peut pas traiter l'opération demandée, il retourne immédiatement le resultCode adéquat, sinon il retourne success. Si le serveur ne peut plus continue la transaction, il fournis un Aborted Transaction Notice avec un resultCode adéquat.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Règlement de transaction }
 
\
 
\hspace{1mm}  Un client demande le règlement de la transaction en fournissant une requête End Transaction, indiquant son désire que la transaction soit traitée ou annulée.
\vspace{5mm} \\
\hspace{1mm}  Une fois reçu une annulation de transaction, le serveur annule l'ID de transaction et abandonne toutes les opérations de la transaction.
\vspace{5mm} \\
\hspace{1mm}  Une fois reçu une fin de transaction, le serveur traite toutes les opérations de la transaction. Le serveur retourne une réponse End Transaction avec resultCode à success et sans responseValue pour indiquer que toutes les modifications ont été appliquées. Sinon, le serveur retourne un resultCode adéquat. Si l'échec est associé avec un requête particulière, le txnEndRes.messageID dans responseValue est l'id de message de cette demande de modification. Si l'échec n'est pas associé à une requête de modification, aucun messageID n'est retourné.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Divers problèmes }
 
\
 
\hspace{1mm}  Les transactions ne peuvent pas être imbriquées. Chaque transaction doit être initiée, spécifiée et terminé avec un contexte de sécurité stable.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Intéraction avec d'autres extensions }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} Contrôle d'assertion]{Le contrôle Assertion est approprié pour les requête de modification dans une transaction. Il n'est pas approprié avec les opérations Start Transaction et End Transaction.}
\item[\hspace{1mm} Contrôle ManageDsaIT]{Le contrôle ManageDsaIT est approprié pour les requête de modification dans une transaction. Il n'est pas approprié avec les opérations Start Transaction et End Transaction.}
\item[\hspace{1mm} Contrôle d'autorisation proxifié]{Ce contrôle est approprié avec l'opération étendue Start Transaction, mais pas End Transaction.}
\item[\hspace{1mm} Contrôle Read Entry]{Les contrôles Pre- et Post-Read sont appropriés avec des requêtes de modification dans une transaction. L'entrée est retournée dans txnEndRes.updatesControls et responseValue d'une réponse End Transaction.}
\end{description}
\end{flushleft}
\end{document}
