%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[11pt,a4paper]{article}

% utilisation des caractères accentués du clavier français
\usepackage[latin1]{inputenc}

% Codage de la fonte pour césure des mots accentués
\usepackage[T1]{fontenc}

% déclaration de babel.
% Si multilingue : \usepackage[english,french,serbian, tec ...]{babel}
\usepackage[french]{babel}

%%% gestion des marges.
\addtolength{\headheight}{1.14998pt}
\topmargin 5 pt
\headsep 30 pt
\textheight 630 pt
\oddsidemargin 0 pt
\evensidemargin 0  pt
\textwidth 480 pt
\parindent 20 pt
\def\baselinestretch{1.1}
\addtolength{\oddsidemargin}{-0.5 cm}
\addtolength{\evensidemargin}{-0.5 cm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



\title {LDAP \\
        Cours 05/03}

\author {Pierre Mauduit}



\begin{document}
\selectlanguage{french}



\maketitle

\section{Annuaire ?}

Un annuare est un conteneur d'informations organisées

Exemples d'annuaires :

\begin{itemize}
	\item annuaire téléphonique
	\item carnet d'addresses
	\item ...
\end{itemize}

Un annuaire électronique a les propriétés suivantes :


\begin {itemize}
	\item protocole d'acces au contenu
	\item syntaxe d'interrogation de la base
	\item modele de duplication
	\item modele de distribution des données
\end{itemize}

Par rapport aux annuaires non électroniques :

\begin {itemize}
	\item Dynamique : taux de mise à jour important
	\item Sécurisation (controle d'accès)
\end{itemize}

Par rapport à une base de données :

\begin{itemize}
	\item Rapport lecture / écriture beaucoup plus élevé pour les annuaires
	\item Plus facilmeent extensible
	\item  Diffusion à plus large échelle
	\item distriution multi serveur plus facile
	\item Dyuplication des infos plus fréquentes	
	\item Standart : LDAP
	\item Performances globales des annuaires plus élevées en lecture
\end{itemize}

Un annuaire est :

\begin{itemize}
        \item Moyen de chercher des infos plus efficacement et rapidement
        \item Accessible à des humains et des applications  
        \item Un outil de gestion (carnet d'addresses, comptes utilisateurs, profils ...)
        \item Un moyen de stockage et de diffusion des certificats dans une PKI
\end{itemize}

Un annuaire n'est pas :
\begin{itemize}
	\item Approprié aux écritures fréquentes
	\item Destiné à manipuler des données volumineuses
\end{itemize}


\section {Historique}

\begin{itemize}
\item 1970-80 : /etc/passwd \\
                IBM MVS PROFS

\item 1980 : Grapevine (Xerox)

\item 1984 : - DNS
             - Whois
\end{itemize}


Annuaires applicatifs :
\begin{itemize}
	\item Lotus cc : Mail, Notes
	\item Unix sendmail, /etc/aliases
	\item Microsoft Exchange
\end{itemize}


Annuaires Internet (Vers le LDAP) :
\begin{itemize}
	\item Bigfoot, Yahoo's Four11, AnyWho ...
\end{itemize}


Annuaires systèmes / réseau (NOS) :
\begin{itemize}
	\item Sun NIS, NIS+
	\item Novell Netware Directory Service
	\item MS Active directory (natif LDAP)
\end{itemize}



Annuaires multi usages :
\begin{itemize}
	\item X500
	\item Whois++
	\item CSO
	\item LDAP
\end{itemize}

X.500 : 
\begin{itemize}
	\item Régles de nommage des objets et des entités
	\item Les protocoles pour fournir le service d'annuaire
	\item Mécanisme d'authentifications
	\item ...  
\end{itemize}


X.500 ne tourne pas sur des serveurs PCs (Architecture propriétaire).
Serveurs très extensibles, fonctions très évoluées de recherche, et
distribué. L'impantation est toutefois très lourde, bugguée, et
difficilement interopérable. Basé sur des protocoles ISO, contraires à
la culture internet.

=> X.500 abandonné car c'est un échec en terme de déploiment. Mais a
permis l'arrivée de LDAP.

LDAP garde beaucoup d'aspects de X.500 mais va dans le sens de la
"culture internet", en améliorant ce qui posait problème.


Protocole d'accès

\begin{itemize}
	\item Comment s'effectue la communication client / serveur
	\item Comment s'établit la communication serveur / serveur
	  (synchronisation, échange de contenu)
	\item Créer des liens permettant de relier des annuaires les uns aux 
	autres.

	\item Format de transport de données : On évite l'ASCII et on
	privilégie le Lightweight Basic Encoding Rules (LBER)

	\item Mécanismes de sécurité
	
	\item Opérations de base : search, compare
			       add, delete modify rename
			       bind, unbind, abandon

	\item Referral service définit dans LDAPv3
	\item "replication service" encore en développement
	\end{itemize}


LDAPv3 conçu pour être extensdible sans avoir à modifier la norme,
grace à 3 concepts :

\begin{itemize}
	\item Ajout d'opérations, en plus des 9 de base
	\item LDAP controls : modification / ajout de comportements.
	\item SASL : (Simple Authentification And Security Layer)
\end{itemize}


\begin{itemize}
\item Entrée : élément de base de l'annuaire.
\item Informations représentées sous la forme d'attributs
\item Il existe toute sorte de classes d'objets (réels ou abstraits)
\item Schéma de l'annuaire définit la liste des classes d'objets qu'il connait
\end{itemize}


``Directory Schema'' est l'ensemble des définitions relatives aux objets
qu'il sait gérer (équivalent du typedef).

Les attributs sont idéntifiés par un nom et un OID. Il existe 2
catégories d'attributs : les attributs utilisateurs et les attributs
systèmes.



Les OID sont normalisé dans un RFC, référencés par l'IANA.

Schémas : 
\begin{itemize}
         \item issus de X.500
	 \item slapd.conf
	 \item ASN.1
	 \item LDAPv3 : stockage des schémas au sein de LDAP
\end{itemize}

exemple de syntaxe dans slapd.conf :

	attriute NAME [ALISASES] [OID] SYNTAXID [OPTIONS]
	attribute cb commonName 2.5.4.3 cis
	objectclass NAME [OID] [superior SUP]
	[required REQATTRS] [allows OPTATTRS]
	object person
	oid 2.5.6.6
	superior top
	requires sn, cn
	allows description, seeAlso, telephoneNumber, userPAssword

exemple de syntaxe ASN.1 : 
 [...]

exemple de syntaxe LDAPv3 :
 [...]


Vérification de schéma : Les schémas sont vérfiés par défaut dans OpenLDAP.
(schema checking)


Le modèle de nommage définit comment sont organisées les entrées dans
l'annuaire et comment elles sont référencées.

Les entrées représentent des objets.

L'organisation des objets se fait suivant une structure logique hiérarchique

- Structure arorescente : "Root Entry" ou "Base DN" pour la racine



DN : distinguished name
	cn=admin,dc=pedrov,dc=net par exemple

\begin {itemize}
 \item Intéret des alias : pointe vers un élément local au LDAP 
 \item  Intéret des referalls : rel : pointe vers une URL LDAP
traités au niveau du serveur LDAP
\end{itemize}


Modèle fonctionnel
\begin{itemize}
\item interrogation, 
\item comparaison, 
\item mise à jour,
\item authentification et controle, 
\item opérations étendues (v3)
\end{itemize}

Requete composée de 8 parametres

Filtres de recherche RFC 2254
(cn=Norbert Durant)
(\&(sn=Durant)(1=paris))

Mises à jour
add, ...

LDAP : protocole avec connexion : ouverture de session (bind) +
identification et éventuellement mot de passe.

"RootDN Authentification" : accès administrateur

- Mot de passe + SSL ou TLS
- Certificats SSL nécessite un échange de certificats
- SASL : OTP par exemple (One Time Password)


ACL assez simples :
<quoi> <qui> <comment>
Comment : Read, Write, Search, Compare, Selfwrite, Add, Delete
Qui     : tout le monde, self ...

Chiffrement

Duplication : à outrance
pas encore standard mais proposé par la plupart des serveurs
IETF prépare le protocole LDUP

Critères de choix d'un logiciel serveur :
\begin{itemize}
\item  Prix d'achat
\item Coûts de maintenance et support
\item Adéquation du logiciel types d'applications envisagées
\end{itemize}


LDIF : représentation des données sous forme de texte
uuencode (base64)

Utilisation des referrals : faire attention à utiliser intelligemment,
car une requete distante peut etre tres lourde.


Utilisations de LDAP :

\begin{itemize}
\item Peut être étroitement lié au système d'exploitation
\item Extranet
\item Peut remplacer un SGDB (fichier clientèle, catalogues de fournitures ...)
\item Couplé à un autre SGDB : exportation de certaines données vers le LDAP
\item Gestion centralisée authentification et droits d'accès (Projet 2)
\end{itemize}

Le futur :
\begin{itemize}
\item Meta-annuaires
\item intégration au coeur des OS
\item prédominance de LDAP
\item tout est annuaire !
\end{itemize}



\end{document}



