\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. sept. 28 16:18:45 CEST 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={rfc4231},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Opération Turn},
CreationDate={D:20130928161845},
ModDate={D:20130928161845},
Keywords={LDAP;Lightweight Directory Access Protocol}
}}
\begin{document}
 
\begin{center}
{\Huge rfc4231 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Opération Turn}
 
\vspace{10mm}
 
\hspace{1mm}  Cette opération étendue inverse les rôles du client et du serveur pour des échanges de protocole dans la session, ou pour permettre à chaque parties d'agir en tant que client et serveur.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Requête Turn }
 
\
 
\hspace{1mm}  L'opération Turn est définie par l'OID \textbf{1.3.6.1.1.19}. La requête Turn est une \textbf{ExtendedRequest} où \textbf{requestName} contient \textbf{1.3.6.1.1.19} et \textbf{requestValue} est une valeur \textbf{turnValue} encodée BER:
\vspace{5mm} \\
 
 
{\ttfamily
turnValue ::= SEQUENCE \{\\ \hspace{2mm}mutual BOOLEAN DEFAULT FALSE,\\ \hspace{2mm}identifier LDAPString\\ \}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Réponse Turn }
 
\
 
\hspace{1mm}  La réponse est une \textbf{ExtendedResponse} où les champs \textbf{responseName} et \textbf{responseValue} sont absent. un \textbf{resultCode} à success indique qu'il est capable d'inverser la sessions.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Authentification }
 
\
 
\hspace{1mm}  Le modèle d'authentification de cette extension assume une authentification séparée des parties dans chacun de leur rôle. Un échange Bind est attendue entre les parties et leur nouveau rôle pour établir les identités dans ces rôles.
\vspace{5mm} \\
 
 
\hspace{1mm}  Une fois le Turn complété, le partie répondant dans son nouveau rôle client a une association anonyme au partie initiant son nouveau rôle serveur. Si le turn est mutuel, l'association d'authentification du partie initiant est laissé intacte.
\vspace{5mm} \\
 
 
\hspace{1mm}  Le partie répondant peut établir son identité dans son rôle client en demandant et complétant une opération Bind.
\vspace{5mm} \\
 
 
\hspace{1mm}  La suite discute de divers scénarios d'authentification. \textbf{A} réfère au partie initiant (le client à l'origine) et \textbf{B} réfère au partie répondant ( le serveur à l'origine)
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Utilisation avec TLS et une authentification simple }
 
\
 
{\ttfamily
A->B: StartTLS Request\\ B->A: StartTLS(success) Response\\ A->B: Bind(Simple(cn=B,dc=example,dc=net,B's secret)) Request\\ B->A: Bind(success) Response\\ A->B: Turn(TRUE,"XXYYZ") Request\\ B->A: Turn(success) Response\\ B->A: Bind(Simple(cn=A,dc=example,dc=net,A's secret)) Request\\ A->B: Bind(success) Response\\
}
\vspace{8mm}
 
\hspace{1mm}  Dans ce scénario, TLS est initié et A établis son identité avec B avant de Turn en utilisant un mécanisme DN/password. après le Turn, B établis son identité avec A.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Utilisation avec TLS et SASL EXTERNAL }
 
\
 
{\ttfamily
A->B: StartTLS Request\\ B->A: StartTLS(success) Response\\ A->B: Bind(SASL(EXTERNAL)) Request\\ B->A: Bind(success) Response\\ A->B: Turn(TRUE,"XXYYZ") Request\\ B->A: Turn(success) Response\\ B->A: Bind(SASL(EXTERNAL)) Request\\ A->B: Bind(success) Response\\
}
\vspace{8mm}
 
\hspace{1mm}  Dans ce scénario, TLS est initié, et A établis son identité avec SASL avant de Turn. Après le Turn, B établis son identité avec A.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Utilisation de l'authentification mutuelle et SASL EXTERNAL }
 
\
 
{\ttfamily
A->B: Bind(SASL(GSSAPI)) Request\\ <intermediate messages>\\ B->A: Bind(success) Response\\ A->B: Turn(TRUE,"XXYYZ") Request\\ B->A: Turn(success) Response\\ B->A: Bind(SASL(EXTERNAL)) Request\\ A->B: Bind(success) Response\\
}
\vspace{8mm}
 
\hspace{1mm}  Dans ce scénario, un échange d'authentification mutuel GSSAPI est complété entre A et B. après le Turn, B demande que A utilise une identité externe pour établir son identité d'authorisation LDAP.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Couches TLS et SASL }
 
\
 
\hspace{1mm}  La table suivante décris la relation entre la couche du message LDAP, SASL, TLS et la connection de transport dans une session LDAP.
\vspace{5mm} \\
 
 
{\ttfamily
- - - - - - -+- - - - - - - - - - - +\\ - - - - - - -| LDAP message layer \_ |\\ - - - - - - -+- - - - - - - - - - - + > LDAP PDUs\\ - - - - - - -+- - - - - - - - - - - + < data\\ - - - - - - -| \_\_\_\_ SASL layer \_\_\_\_ |\\ - - - - - - -+- - - - - - - - - - - + > SASL-protected data\\ - - - - - - -+- - - - - - - - - - - + < data\\ - - - - - - -| \_\_\_\_\_ TLS layer \_\_\_\_ |\\ Application -+- - - - - - - - - - - + > TLS-protected data\\ - - - - - - -+- - - - - - - - - - - + < data\\ - Transport -| transport connection |\\ - - - - - - -+- - - - - - - - - - - +\\
}
\vspace{8mm}
 
\hspace{1mm}  Cette extension n'altère pas la relation, ni ne supprime les restriction générales des couches TLS et SASL multiples. StartTLS est utilisé pour initier la négociation TLS. si TLS est déjà établis, StartTLS peut échouer.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
